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

30 篇文章 0 订阅
30 篇文章 0 订阅

前面有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(条件)的生成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值