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

数据库组件 Hxj.Data(七) (sql篇)

上一节讲述的是删除操作,本节将讲述如何直接执行sql语句。 直接执行sql语句是使用fromSql方法。 DbSession.Default.fromSql("select * from products").ToDataTable();
 
这样看起来亲切多了吧,直接sql就可以执行。
 
当然也可添加参数的啊。
DbSession.Default.fromSql("select * from products where productid=pid").AddInParameter("pid", DbType.Int32, 1).ToDataTable();

这样的查询条件是productid=1返回一条记录。
这里sql语句中pid要确保唯一,不然都会被替换成参数的。
比如:select * from products where productid=productid 这样在sqlserver下就会被替换成select * from products where @productid=@productid
这里只是做了简单的替换,所以确保申明的参数唯一性。
 
当多个参数时可如下写法:
DbParameter[] parameters = new DbParameter[2];
parameters[0] = DbSession.Default.Db.DbProviderFactory.CreateParameter();
parameters[0].DbType = DbType.Int32;
parameters[0].ParameterName = "pid";
parameters[0].Value = 1;
parameters[1] = DbSession.Default.Db.DbProviderFactory.CreateParameter();
parameters[1].DbType = DbType.Int32;
parameters[1].ParameterName = "cid";
parameters[1].Value = 2;
DbSession.Default.fromSql("select * from products where productid=pid or categoryid=cid")
.AddParameter(parameters)
.ToDataTable();

 
这样写似乎太麻烦了,更简洁的写法如下:
DbSession.Default.fromSql("select * from products where productid=pid or categoryid=cid")
.AddInParameter("pid", DbType.Int32, 1)
.AddInParameter("cid", DbType.Int32, 2)
.ToDataTable();

 
这样就清爽多了。
 
返回类型还可以如下:
 
IDataReader ToDataReader()
返回DataReader
 
DataSet ToDataSet()
返回DataSet
 
int ExecuteNonQuery()
返回受影响的条数
 
object ToScalar()
返回单个值
 
TResult ToScalar<TResult>()
返回执行类型的值
 
也可返回实体。
TEntity ToFirst<TEntity>()
返回第一条


相关文档:

簡單SQL存儲過程實例

实例1:只返回单一记录集的存储过程。
银行存款表(bankMoney)的内容如下
Id
userID
Sex
Money
001
Zhangsan

30
002
Wangwu

50
003
Zhangsan

40
要求1:查询表bankMoney的内容的存储过程
create procedure sp_query_bankMoney
as
select * from bankMoney
go
exec sp_query_bankMoney
注 ......

SQL 2005中文乱码问题

使用SQL SERVER2005的时候遇到了中文字符为乱码的情况,经过研究发现,设置SQL的排序规则可以解决这个问题。
1、登录服务器打开Microsoft SQL Server Management Studio。
2、在要修改的数据库上单击鼠标右键,并选择“属性”。
3、在弹出的数据库属性窗口中点击“选择页”中的“选项”。 ......

sql server安装版本查看


SELECT SERVERPROPERTY('productversion'), SERVERPROPERTY ('productlevel'), SERVERPROPERTY ('edition')
productversion:产品版本(例如,10.0.1600.22)
productlevel:产品级别(例如,RTM)
edition:版本(例如, Enterprise(企业版)、Developer Edition(开发版))
SELECT @@VERSION
微软具体说明:
......

mysql和sql server

在性能上,mysql是相当出色的,桌面格式myisam数据库与磁盘非常地兼容而不占用过多的cpu和内存,mysql内部很多时候都使用64位整数处理。yahoo就使用mysql后台数据库。
但mysql缺少一些附加功能,没有SqlServer全面。
sqlserver稳定型强,但必须增加额外复杂操作,磁盘存储,内存损耗等,对硬件软件要求都很高。
这两个数 ......

SQL组合查询及先后顺序对效率的影响

在SQL跨表组合查询存在效率问题,举例比如
delete from media_source where movie_id in ( select media_id from media where type=2 ) and origin = 3;

delete from media_source where origin = 3 and movie_id in ( select media_id from media where type=2 );
的效率是不一样的。
若origin=3的情况下media_so ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号