您的位置:首页 > 数据库

数据库组件 Hxj.Data (十) (输出组件执行的sql)

2010-05-17 14:19 267 查看
前面有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(条件)的生成。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐