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

MYSQL
PHP中操作MySQL的一些要注意的问题
数据恢复简介
SQL SERVER 2000 安装(症状归纳)
轻松应对JSP连接MySQL数据库问题
Mysql关于数据库和表的几个最基本命令
批量更改sql server数据库所有者的对象
VFP中用SPT访问SQL Server数据库
SQL Server如何访问sybase数据库的表
SQL Server Compact Edition 程序建立步骤
C# 怎样实现远程连接SQL Server2005
SQL数据库用户只有“名称”而无“登陆名”解决
SQL Server中取汉字拼音的函数
SQL扩展存储过程安装与卸载
实现jsp页面二级下拉框联动,实时读取数据库数据
Sql server 提示挂起问题
最详细的SQL注入相关的命令整理
简介影响mysqld安全的四个选项
精讲MySQL数据库的SQL语法参考
教你怎样在MySQL中提高全文搜索效率
将你的网站从MySQL改为Postgre SQL

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-30   浏览: 85 ::
收藏到网摘: 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语句。

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