快速业务通道

Enterprise Library 2.0 -- Data Access Application Block

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-21
创建方式有两种:一种是为了调用存储过程创建,一种是为了执行一般的SQL语句而创建,具体用哪一种方式,就要看你需要执行的是存储过程还是SQL语句了。

//创建一个SQL语句的DbCommand
Database db = DatabaseFactory.CreateDatabase();
string sql = "Select * from person";
DbCommand Sqldbcomm = db.GetSqlStringCommand(sql);
//创建一个存储过程的DbCommand
//存储过程名称为GetAllPersonByName
string procName = "GetAllPersonByName";
DbCommand Procdbcomm = db.GetStoredProcCommand(procName);

3、存储过程中的参数处理

DataBase类中包含多种传递存储过程参数的方法,也包含了得到和设置参数值的方法,如下:

AddParameter. 为存储过程传递一个参数(输入型或输出型)

AddInParameter. 为存储过程传递一个输入型参数

AddOutParameter. 为存储过程传递一个输出型参数

GetParameterValue. 获取某存储过程指定参数的值

SetParameterValue. 为存储过程的某个参数赋值,当你需要用同一个方法来执行插入多条记录时,就可参数给参数赋值的方法来进行

//创建一个存储过程的DbCommand
//存储过程名称为GetAllPersonByName
string procName = "GetAllPersonByName";
DbCommand Procdbcomm = db.GetStoredProcCommand(procName);

//添加一个输入型的参数
db.AddInParameter(Procdbcomm, "@sex", DbType.String);
//添加一个输出型的参数
db.AddOutParameter(Procdbcomm, "@name", DbType.String,20);
//设置参数的值
db.SetParameterValue(Procdbcomm, "@sex", "男");

//执行存储过程
db.ExecuteNonQuery(Procdbcomm);

//得到输出参数的值,注意转化返回值类型
string outvalue = (string) db.GetParameterValue(Procdbcomm, "@name");

4、执行ExecuteReader方法返回一个IDataReader类型的数据集

因为ExecuteReader方法在一开始执行时就打开了一个与数据库的连接,所以我们必须注意在使用结束时关闭连接,而用using(){}语句块就能确保ExecuteReader方法在执行完毕时关闭与数据库的连接。

什么时候使用此方法:

返回的数据仅仅用来显示,并不对其进行修改,删除等操作;

绑定返回的数据到WebForm Control

不需要缓存返回的数据,用完就释放

using (IDataReader reader = db.ExecuteReader(CommandType.Text, "select * from person"))
{
DataGrid1.DataSource = reader;
DataGrid1.DataBind();
}

5、执行ExecuteDataSet方法返回一个DataSet

public DataSet GetPersonList()
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbcomm = db.GetSqlStringCommand("select * from person");

return db.ExecuteDataSet(dbcomm);
}

什么时候使用此方法:

需要返回多表数据;

如果你需要逐一访问数据库的每一条记录,这个时候如果使用DataReader的话,则会使与数据库的连接一直处于打开的状态,长此以往,就会使应用程序的性能和可伸缩性大大降低;

需要和其他的应用程序交换数据;

6、执行ExecuteNonQuery

该方法返回的是SQL语句执行影响的行数,我们可以利用该方法来执行一些没有返回值的操作(Insert,Update,Delete)

public void AddPerson()
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbcomm = db.GetSqlStringCommand("insert into person values(1,''shy'',''女'',''123456'')");

db.ExecuteNonQuery(dbcomm);
}

7、执行ExecuteScalar返回单值

public string GetPersonName()
{
Database db = DatabaseFactory.CreateDatabase();
DbCommand dbcomm = db.GetSqlStringCommand(

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号