程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> SQL查詢語句對象化的實現(C#)

SQL查詢語句對象化的實現(C#)

編輯:關於MYSQL數據庫

在開發數據庫應用的過程難免會編寫大量的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語句。

接下來講術這個查詢對象實現,對象的

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved