程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 數據庫組件 Hxj.Data (十) (輸出組件執行的sql)

數據庫組件 Hxj.Data (十) (輸出組件執行的sql)

編輯:關於ASP.NET

前面有TX留言問分頁的sql是怎麼樣的,看完這篇你也就知道了。

組件可以輸出執行的sql,方便查看sql生成的語句是否有問題。

通過注冊事件來輸出sql

DbSession.Default.RegisterSqlLogger(database_OnLog);

private string sql;
void database_OnLog(string logMsg)
{
   //保存執行的DbCommand (sql語句和參數)
   sql += "<br />" + logMsg;
}

然後通過執行

DbSession.Default.UnregisterSqlLogger(database_OnLog); 來注銷注冊的事件。

這裡是例子是asp.net

DbSession.Default.From<Products>()
         .InnerJoin<Suppliers>(Suppliers._.SupplierID == Products._.SupplierID)
         .Page(10, 2)
         .Select(Products._.ProductID, Products._.ProductName)
         .ToDataTable();

執行上面的語句輸出的sql語句如下:

SELECT  * FROM
( SELECT  TOP 10 * FROM
( SELECT  TOP 20 [Products].[ProductID],[Products].[ProductName]
FROM [Products]
INNER JOIN [Suppliers]
ON ([Suppliers].[SupplierID] = [Products].[SupplierID])
ORDER BY [Products].[ProductID] ASC) AS tempIntable
ORDER BY [ProductID] DESC) AS tempOuttable
ORDER BY [ProductID] ASC

再來一個

DbSession.Default.From<Products>().Where(Products._.CategoryID == 2).ToFirst();

生成的sql語句如下

Text:
SELECT TOP 1 * FROM [Products] WHERE [Products].[CategoryID] = @ae2b9c6a112545e5b56fa6dc70f32ac1
Parameters:
@ae2b9c6a112545e5b56fa6dc70f32ac1[Int32] = 2

這下組件生成的sql語句可以一目了然了,sql語句的輸出也大大方便了調試。

下一節將講述WhereClip(條件)的生成。

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