易截截图软件、单文件、免安装、纯绿色、仅160KB

数据库组件 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(条件)的生成。




相关文档:

SQL 中的命令大全

--语 句 功 能 
--数据操作 
SELECT --从数据库表中检索数据行和列 
INSERT --向数据库表添加新数据行 
DELETE --从数据库表中删除数据行 
UPDATE --更新数据库表中的数据 
--数据定义 
CREATE TABLE --创建一个数据库表 
DROP TABLE --从数据库中删除表 
......

ADO.net,Linq to SQL和Entity Framework性能实测分析


ADO.net,Linq to SQL和Entity Framework性能实测分析
  最近文档写了不少,导致Word和Excel的使用能力飞一般成长。考虑到项目中读写数据库的方法存在效率不高,以致影响用户体验的问题,决定测试一下Microsoft新推行的Linq和EF能不能在效率上有所改进。
  测试环境当然就是我这台笔记本了,受限与硬盘转速,运行起 ......

向sql数据库中插入空时间报系统错误的解决方法

数据库表设计时如果设置可以为null,则它就不会变为'1900-1-01'  
  如果设计时不可以为null,它就会默认为:   '1900-01-01'
CREATE proc UP_Rsk_AddModel  @ygcode varchar(6),  @name varchar(8),  @xb varchar(2),  @bm varchar(32),  @jg varchar(16),  @mz varchar(16) ......

SQL中object_id函数的用法

SQL中object_id函数的用法 收藏
 int object_id('objectname');
此方法返回数据库对象标识号。
其中,参数objectname 表示要使用的对象,其数据类型为nchar或char(如果为char,系统将其转换为nchar)
返回类型为int,表示该对象在系统中的编号。
比如:
use wf_timesheet
select object_id('usp_check_excess ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号