数据库组件 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(条件)的生成。
相关文档:
--语 句 功 能
--数据操作
SELECT --从数据库表中检索数据行和列
INSERT --向数据库表添加新数据行
DELETE --从数据库表中删除数据行
UPDATE --更新数据库表中的数据
--数据定义
CREATE TABLE --创建一个数据库表
DROP TABLE --从数据库中删除表
......
在sqlserver2005中用sql语句写代码,生成数据表
CREATE TABLE [t_ActivityRecord] (
[activityId] [nchar] (10) NOT NULL,
[activityName] [nvarchar] (50) NOT NULL,
[activityMark] [decimal] (18,3) NOT NULL,
[activityStatement] [ntext] NOT NULL,
[activityDateTime] [date] NOT ......
数据库表设计时如果设置可以为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) ......
在平时的工作过程中,作为DBA角色管理数据库,头脑中的印象往往是数据库实例名称,而不会去关心Server的IP,而作为Developer的角色,他们往往想知道知道Server Ip和端口号。所以,DBA会经常被问及到:XXX实例的IP和端口号是什么?
这个问题,当然我们可以Login到OS查看IP、使用配制管理工具获取到端口号。但是,这个方法非 ......