VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 数据库 > SQL教程 >
  • 数据库组件 Hxj.Data (十) (输出组件执行的sql)

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

 

作者:steven hu 出处:http://www.cnblogs.com/huxj


相关教程