Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2538623
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类:

2010-10-09 22:27:59

   
文件: SqlBuilderV0.0.0.1.rar
大小: 684KB
下载: 下载
    开发工具:Visual Studio 2008
    开发语言:C#
    开发平台:.net framework 3.5

    编了这么长时间的程序,在刚开始我们都编写对数据库增删改,写的头大了。早在两天前想,为什么我不编写一个Sql生成器。其实我也知道现在的ORM产品很多,在java上的Hibernate,微软的Linq,不过他们都特别的复杂,都要去配置。我编写的是一个轻量级的ORM,只要调用类库,设置字段的名称,类型,值,表名称。等基本参数,即可对数据库进行添加,修改,删除操作。其实原理也很简单,也就是对Sql的Insert,Update,Delete进行分析。然后去组装SQL语句,其实也就是雕虫小技。
    其实,这个程序,我写了这个版本。是我感觉还算比较满意的一个版本。不过还没有封装好。虽然写了好几年的程序,现在发现我对面向对象的理解也太肤浅了。刚开始我大量用了继承,真叫一个痛苦,代码基本不能重用。然后又看了看设计模式的书籍,仔细的去阅读对象之间的关系,在设计模式中有一个叫做组合替换继承。经过多次的修改代码,重构。代码算是比以前好了。经过这个过程,我发现。重构在平时。只有你多编码程序,或许,在开始你的程序写的很烂。也要坚持。当有一天你发现你写的代码很烂的时候。就说明你的量变引起了质变了。不然你不会看出你写的代码很烂。就像一本书上写的编程的精髓就是:编程,编程,再编程。
   对了该如何使用这段代码呢,使用测试中的代码即可说明问题,代码如下:

        ///



        ///A test for InsertAction

        ///


        [TestMethod()]
        public void InsertActionTest()
        {
            DbAction target = new SqlServerAction(); // TODO: Initialize to an appropriate value

            string tableName = "uums_role_info"; // TODO: Initialize to an appropriate value

            IList<ParameterColumn> columns = new List<ParameterColumn>() ; // TODO: Initialize to an appropriate value

            columns.Add(new ParameterColumn(new Column("role_code", ColumnTypeEnum.VarChar, "test"), true));
            columns.Add(new ParameterColumn(new Column("memo", ColumnTypeEnum.VarChar, "test"), false));
            int expected = 1; // TODO: Initialize to an appropriate value

            int actual;
            actual = target.InsertAction(tableName, columns);
            Assert.AreEqual(expected, actual);
        }


从上面的测试代码中,我们可以看到,我们进行Insert操作的表名为“uums_role_info”,然后对"role_code","memo"进行了赋值。然后调用InsertAction方法。架构图如下:
阅读(4197) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~