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

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

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

通過註冊事件來輸出sql

DbSession.Default.RegisterSqlLogger(database_OnLog);
 
private string sql;

void database_OnLog(string logMsg)
{
//保存執行的DbCommand (sql語句和參數)
sql += "
"
+ logMsg;
}
 
然後通過執行
DbSession.Default.UnregisterSqlLogger(database_OnLog);
來註銷註冊的事件。
 

這裏是例子是asp.net

DbSession.Default.From()
.InnerJoin(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().Where(Products._.CategoryID == 2).ToFirst();

生成的sql語句如下

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

Parameters:
@ae2b9c6a112545e5b56fa6dc70f32ac1[Int32] = 2


這下組件生成的sql語句可以一目瞭然了,sql語句的輸出也大大方便了調試。
 
 
下一節將講述WhereClip(條件)的生成。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章