首页 / 网页编程 / ASP.NET / 数据库组件 Hxj.Data (十) (输出组件执行的sql)
数据库组件 Hxj.Data (十) (输出组件执行的sql)2011-07-21 博客园 steven hu前面有TX留言问分页的sql是怎么样的,看完这篇你也就知道了。组件可以输出执行的sql,方便查看sql生成的语句是否有问题。通过注册事件来输出sqlDbSession.Default.RegisterSqlLogger(database_OnLog);private string sql; void database_OnLog(string logMsg) { //保存执行的DbCommand (sql语句和参数) sql += "<br />" + logMsg; }然后通过执行DbSession.Default.UnregisterSqlLogger(database_OnLog); 来注销注册的事件。这里是例子是asp.netDbSession.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(条件)的生成。