当前位置: 首页 > 图文教程 > 数据库 > MYSQL > SQL查询语句对象化的实现(C#)

MYSQL
mysql 常用数据库语句 小练习
MYSQL ERROR 1045 (28000): Access denied for user (using password: YES)问题的解决
mysql 字符集的系统变量说明
MySQL 在触发器里中断记录的插入或更新?
将MySQL数据库移植为PostgreSQL
mysql 操作总结 INSERT和REPLACE
linux mysql忘记密码的多种解决或Access denied for user ''root''@''localhost''
运用mysqldump 工具时需要注意的问题
mysql 优化日记
MySQL 字符串函数大全
mysql 截取指定的两个字符串之间的内容
MySQL 备份还原数据库批处理
mysql 数据库中my.ini的优化 2G内存针对站多 抗压型的设置
Mysql 数字类型转换函数
mysql 动态生成测试数据
mysql 显示SQL语句执行时间的代码
mysql 设置查询缓存
MYSQL explain 执行计划
MySQL 有输入输出参数的存储过程实例
巧用mysql提示符prompt清晰管理数据库的方法

MYSQL 中的 SQL查询语句对象化的实现(C#)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 55 ::
收藏到网摘: n/a

 

在开发数据库应用的过程难免会编写大量的SQL语句,其中大部份是查询语句;为不同情况编写查询语句是一件很烦琐的事件。用过hibernate或Nhibernate会了解到把SQL查询语句对象化后使用起非常方便和快捷;也大大减少在编写查询SQL语句所带来的错误等问题。

       前段时间在编写一个数据处理类的时候同样遇到这个问题,经过一段时间思考和设计现实现了SQL查询语句对象化的功能;在这里我把自己小小的成果共享一下。

在讲解前先看几个例子(数据是SQLServer的Northwind)注意:例子中所涉及的除查询对象化外还包含整个数据处理类的使用,那部分还在设计和完善当中。

 

       1)以上语句是查询订单ID为10264的订单信息

       using(HFSoft.Data.IDataSession session = HFSoft.Data.DataSessionFactory.OpenSession())

     {

         session.Open();

         HFSoft.Data.QueryCmd query = new QueryCmd("Orders");

         query.Expreesion.Add(new HFSoft.Data.EqExpression("OrderID",10264));

          System.Data.DataSet myDS = session.ExecuteDataSet(query.BuilderCmd(session));

     }

     对象生成的SQL语句:

SELECT * FROM Orders  where  1=1  And (OrderID = @OrderID0)

 

     2)以上语句是查询订单ID大于10264并且小于10600的订单信息

       using(HFSoft.Data.IDataSession session = HFSoft.Data.DataSessionFactory.OpenSession())

     {

         session.Open();

         HFSoft.Data.QueryCmd query = new QueryCmd("Orders");

         query.Expreesion.Add(  new HFSoft.Data.LeExpression("OrderID",10264),

                                 new HFSoft.Data.RtExpression("OrderID",10600));

         System.Data.DataSet myDS = session.ExecuteDataSet(query.BuilderCmd(session));

     }

     对象生成的SQL语句:

SELECT * FROM Orders  where  1=1  And (OrderID > @OrderID0) And (OrderID < @OrderID1)

 

4)以上语句是查询订单ID大于10264并且小于10600或编号是10601,10602,10605的订单信息

using(HFSoft.Data.IDataSession session = HFSoft.Data.DataSessionFactory.OpenSession())

{

         session.Open();

         HFSoft.Data.QueryCmd query = new QueryCmd("Orders");

         query.Expreesion.Add(  new HFSoft.Data.LeExpression("OrderID",10264),

                       new HFSoft.Data.RtExpression("OrderID",10600));

         query.Expreesion.Add(HFSoft.Data.UintType.Or,new HFSoft.Data.InExpression("OrderID",new int[]{10601,10602,10605}));

         System.Data.DataSet myDS = session.ExecuteDataSet(query.BuilderCmd(session));       }

对象生成的SQL语句:

SELECT * FROM Orders  where  1=1  And (OrderID > @OrderID0) And (OrderID < @OrderID1) Or (OrderID in (@OrderID20,@OrderID21,@OrderID22))

 

从上面的例子我们可以看到对不同的条件进行数据查询只是一件很简单的事情,你并不用为不同的查询情况写相应SQL语句。

接下来讲术这个查询对象实现,对象的