EnterpriseLibrary 20企业库常用方法Word格式.docx
- 文档编号:17309551
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:18
- 大小:222.71KB
EnterpriseLibrary 20企业库常用方法Word格式.docx
《EnterpriseLibrary 20企业库常用方法Word格式.docx》由会员分享,可在线阅读,更多相关《EnterpriseLibrary 20企业库常用方法Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
stringsql="
Select*fromperson"
DbCommandSqldbcomm=db.GetSqlStringCommand(sql);
//创建一个存储过程的DbCommand
//存储过程名称为GetAllPersonByName
stringprocName="
GetAllPersonByName"
DbCommandProcdbcomm=db.GetStoredProcCommand(procName);
3、存储过程中的参数处理
DataBase类中包含多种传递存储过程参数的方法,也包含了得到和设置参数值的方法,如下:
AddParameter.为存储过程传递一个参数(输入型或输出型)
AddInParameter.为存储过程传递一个输入型参数
AddOutParameter.为存储过程传递一个输出型参数
GetParameterValue.获取某存储过程指定参数的值
SetParameterValue.为存储过程的某个参数赋值,当你需要用同一个方法来执行插入多条记录时,就可参数给参数赋值的方法来进行
//添加一个输入型的参数
db.AddInParameter(Procdbcomm,"
@sex"
DbType.String);
//添加一个输出型的参数
db.AddOutParameter(Procdbcomm,"
@name"
DbType.String,20);
//设置参数的值
db.SetParameterValue(Procdbcomm,"
"
男"
//执行存储过程
db.ExecuteNonQuery(Procdbcomm);
//得到输出参数的值,注意转化返回值类型
stringoutvalue=(string)db.GetParameterValue(Procdbcomm,"
4、执行ExecuteReader方法返回一个IDataReader类型的数据集
因为ExecuteReader方法在一开始执行时就打开了一个与数据库的连接,所以我们必须注意在使用结束时关闭连接,而用using(){}语句块就能确保ExecuteReader方法在执行完毕时关闭与数据库的连接。
什么时候使用此方法:
返回的数据仅仅用来显示,并不对其进行修改,删除等操作;
绑定返回的数据到WebFormControl
不需要缓存返回的数据,用完就释放
using(IDataReaderreader=db.ExecuteReader(CommandType.Text,"
select*fromperson"
))
{
DataGrid1.DataSource=reader;
DataGrid1.DataBind();
}
5、执行ExecuteDataSet方法返回一个DataSet
publicDataSetGetPersonList()
DbCommanddbcomm=db.GetSqlStringCommand("
returndb.ExecuteDataSet(dbcomm);
需要返回多表数据;
如果你需要逐一访问数据库的每一条记录,这个时候如果使用DataReader的话,则会使与数据库的连接一直处于打开的状态,长此以往,就会使应用程序的性能和可伸缩性大大降低;
需要和其他的应用程序交换数据;
6、执行ExecuteNonQuery
该方法返回的是SQL语句执行影响的行数,我们可以利用该方法来执行一些没有返回值的操作(Insert,Update,Delete)
publicvoidAddPerson()
insertintopersonvalues(1,'
shy'
'
女'
123456'
)"
db.ExecuteNonQuery(dbcomm);
7、执行ExecuteScalar返回单值
publicstringGetPersonName()
selectnamefromperson"
return(string)db.ExecuteScalar(dbcomm);
8、事务处理
publicvoidUseTransaction()
DbCommanddbcomm1=db.GetSqlStringCommand("
updatepersonsetname='
pw'
"
DbCommanddbcomm2=db.GetSqlStringCommand("
deletefrompersonwhereid=1"
using(DbConnectionconn=db.CreateConnection())
//打开连接
conn.Open();
//创建事务
DbTransactiontrans=conn.BeginTransaction();
try
db.ExecuteNonQuery(dbcomm1);
db.ExecuteNonQuery(dbcomm2);
//都执行成功则提交事务
trans.Commit();
catch(Exception)
//发生异常,事务回滚
trans.Rollback();
//关闭连接
conn.Close();
9、执行ExecuteXmlReader返回XML数据
支持SqlServer2000及以后版本的数据库,对微软以外的数据库应该不支持。
publicvoidUseXMLReader()
SqlDatabasedbSQL=DatabaseFactory.CreateDatabase("
//要返回XML数据需要在SQL语句后加FORXMLAUTO
stringsqlCommand="
SELECTProductID,ProductNameFROMProductsFORXMLAUTO"
DbCommanddbCommand=dbSQL.GetSqlStringCommand(sqlCommand);
XmlReaderpersonReader=null;
StringBuilderpersonlist=newStringBuilder();
personReader=dbSQL.ExecuteXmlReader(dbCommand);
//循环向XML中写入我们查询得到的数据
while(!
personReader.EOF)
if(personReader.IsStartElement())
personlist.Append(personReader.ReadOuterXml());
personlist.Append(Environment.NewLine);
finally
//关闭Reader.
if(personReader!
=null)
personReader.Close();
//关闭数据库连接
if(dbCommand.Connection!
dbCommand.Connection.Close();
10、用DataSet批量的添加,修改,删除数据
publicvoidUpdateDataBase()
DataSetpersonDataSet=newDataSet();
DbCommanddbCommand=db.GetSqlStringCommand(sqlCommand);
stringpersonTable="
person"
//得到初始化数据
db.LoadDataSet(dbCommand,personDataSet,personTable);
//得到未修改前的数据集
DataTabletable=personDataSet.Tables[personTable];
//往DataSet中添加一行数据
DataRowaddedRow=table.Rows.Add(newobject[]{18,"
Newperson"
654321"
});
//修改
table.Rows[0]["
ProductName"
]="
Modifiedproduct"
//下面分别创建添加,修改,删除的操作
DbCommandinsertCommand=db.GetStoredProcCommand("
AddPerson"
db.AddInParameter(insertCommand,"
Name"
DbType.String,"
DataRowVersion.Current);
Sex"
ID"
DbType.Int32,"
DbCommanddeleteCommand=db.GetStoredProcCommand("
DeletePerson"
db.AddInParameter(deleteCommand,"
DbCommandupdateCommand=db.GetStoredProcCommand("
UpdatePerson"
db.AddInParameter(updateCommand,"
//提交对DataSet的修改,并返回影响的行数
introwsAffected=db.UpdateDataSet(productsDataSet,"
Products"
insertCommand,updateCommand,deleteCommand,Microsoft.Practices.EnterpriseLibrary.Data.UpdateBehavior.Standard);
//-->
EnterpriseLibrary2.0数据库常用操作2(不同版本的解释)
今天学习了EnterpriseLibrary2.0的DataAccessApplicationBlock,DataAccessApplicationBlock提供了通用的数据访问的功能,随着2.0版本的推出有了很大变化。
俺就多写了对SQL和ACCESS数据库自由切换的一些代码出来共享。
先看完原文再接俺的代码吧。
一.改进
在DAAB1.1里面我们知道Database方法返回或者创建一个DBCommandWrapper对象,而在DAAB2.0里面移除了DBCommandWrapper类,用ADO.NET2.0里面的DBCommand类代替实现类似的功能,这样使得DAAB跟我们的.NET类库的结合更加紧密,回忆一下我们在1.1里面用DBCommandWrapper来访问数据时的代码:
二.使用示例
DBCommandWrapperdbCommand=db.GetStoredProcCommandWrapper("
GetProductsByCategory"
dbCommand.AddInParameter("
CategoryID"
DbType.Int32,Category);
DataSetproductDataSet=db.ExecuteDataSet(dbCommand);
而用了新的DBCommand类之后则变成了:
DbCommanddbCommand=db.GetStoredProcCommand("
db.AddInParameter(dbCommand,"
数据库连接字符串在我们基于数据库的开发永远是少不了的,但是在DAAB1.1下,它所使用的字符串跟我们在.NET类库中使用的连接字符串却是不能共享的,它们分别保存在不同的位置。
而在2.0的DataAccessApplicationBlock使用了ADO.NET2.0里面<
connectionStrings>
配置区,这样带来的一个好处是连接字符串可以在ApplicationBlock和自定义的.NET类之间共享使用该配置区,如:
<
add
name="
DataAccessQuickStart"
providerName="
System.Data.SqlClient"
connectionString="
server=(local)\SQLEXPRESS;
database=EntLibQuickStarts;
IntegratedSecurity=true"
/>
/connectionStrings>
在.NET2.0下,泛型编程已经成为了一个核心,而2.0版的DAAB中也新增了一个GenericDatabase对象。
DAAB中虽然已经包含了SqlDatabase和OrcaleDatabase,但是如果我们需要使用其他的像DB2等数据库时,就需要用到GenericDatabase,它可以用于任何.NET类库中的数据提供者,包括OdbcProvider和OleDbProvider。
DAAB2.0的配置非常简单,主要有以下几方面的配置:
配置连接字符串
配置默认数据库
添加相关的命名空间:
usingMicrosoft.Practices.EnterpriseLibrary.Data;
usingSystem.Data;
使用DataAccessApplicationBlock进行数据的读取和操作,一般分为三步:
1.创建Database对象
2.提供命令参数,如果需要的话
3.执行命令
下面分别看一下DataAccessQuickStart中提供的一些例子:
执行静态的SQL语句
publicstringGetCustomerList()
{
//创建Database对象
//使用SQL语句创建DbCommand对象
SelectCustomerID,Name,Address,City,Country,PostalCode"
+
"
FromCustomers"
StringBuilderreaderData=newStringBuilder();
//调用ExecuteReader方法
using(IDataReaderdataReader=db.ExecuteReader(dbCommand))
while(dataReader.Read())
{
//Getthevalueofthe'
Name'
columnintheDataReader
readerData.Append(dataReader["
]);
readerData.Append(Environment.NewLine);
}
}
returnreaderData.ToString();
执行存储过程并传递参数,返回DataSet
publicDataSetGetProductsInCategory(intCategory)
//CreatetheDatabaseobject,usingthedefaultdatabaseservice.The
//defaultdatabaseserviceisdeterminedthroughconfiguration.
Databasedb=DatabaseFactory.CreateDatabase();
stringsqlCommand="
DbCommanddbCommand=db.GetStoredProcCommand(sqlCommand);
//Retrieveproductsfromthespecifiedcategory.
db.AddInParameter(dbCommand,"
//DataSetthatwillholdthereturnedresults
DataSetproductsDataSet=null;
productsDataSet=db.ExecuteDataSet(dbCommand);
//Note:
connectionwasclosedbyExecuteDataSetmethodcall
returnproductsDataSet;
利用DataSet更新数据
publicintUpdateProducts()
DataSetproductsDataSet=newDataSet();
SelectProductID,ProductName,CategoryID,UnitPrice,LastUpdate"
FromProduc
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EnterpriseLibrary 20企业库常用方法 20 企业库 常用 方法