Enterprise-Library 20--企业库常用方法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1EnterpriseLibrary2.0--企业库常用方法下面我们重点来说一下DataAccessApplicationBlock操作数据库的方法。1、创建一个数据库实例DataBase//创建一个默认的数据库实例Databasedefaultdb=DatabaseFactory.CreateDatabase();//创建一个名为ConnectionString的数据库实例Databasedb=DatabaseFactory.CreateDatabase(ConnectionString);//上面两种创建数据库实例的方法的数据库可以是任何类型的数据库,取决于Config文件中的配置信息//下面的这种方面展示了创建一个SQL数据库的实例,需引用Microsoft.Practices.EnterpriseLibrary.Data.Sql程序集SqlDatabasedbsql=DatabaseFactory.CreateDatabase(ConnectionString)asSqlDatabase;//我们同样也可以不通过配置文件来创建数据库实例,如下stringconnString=server=.;database=EnterpriseLibrary;uid=sa;pwd=;SqlDatabasenocofigdb=newSqlDatabase(connString);2、创建DbCommandDbCommand的创建方式有两种:一种是为了调用存储过程创建,一种是为了执行一般的SQL语句而创建,具体用哪一种方式,就要看你需2要执行的是存储过程还是SQL语句了。//创建一个SQL语句的DbCommandDatabasedb=DatabaseFactory.CreateDatabase();stringsql=Select*fromperson;DbCommandSqldbcomm=db.GetSqlStringCommand(sql);//创建一个存储过程的DbCommand//存储过程名称为GetAllPersonByNamestringprocName=GetAllPersonByName;DbCommandProcdbcomm=db.GetStoredProcCommand(procName);3、存储过程中的参数处理DataBase类中包含多种传递存储过程参数的方法,也包含了得到和设置参数值的方法,如下:AddParameter.为存储过程传递一个参数(输入型或输出型)AddInParameter.为存储过程传递一个输入型参数AddOutParameter.为存储过程传递一个输出型参数GetParameterValue.获取某存储过程指定参数的值SetParameterValue.为存储过程的某个参数赋值,当你需要用同一个方法来执行插入多条记录时,就可参数给参数赋值的方法来进行//创建一个存储过程的DbCommand//存储过程名称为GetAllPersonByNamestringprocName=GetAllPersonByName;DbCommandProcdbcomm=db.GetStoredProcCommand(procName);3//添加一个输入型的参数db.AddInParameter(Procdbcomm,@sex,DbType.String);//添加一个输出型的参数db.AddOutParameter(Procdbcomm,@name,DbType.String,20);//设置参数的值db.SetParameterValue(Procdbcomm,@sex,男);//执行存储过程db.ExecuteNonQuery(Procdbcomm);//得到输出参数的值,注意转化返回值类型stringoutvalue=(string)db.GetParameterValue(Procdbcomm,@name);4、执行ExecuteReader方法返回一个IDataReader类型的数据集因为ExecuteReader方法在一开始执行时就打开了一个与数据库的连接,所以我们必须注意在使用结束时关闭连接,而用using(){}语句块就能确保ExecuteReader方法在执行完毕时关闭与数据库的连接。什么时候使用此方法:返回的数据仅仅用来显示,并不对其进行修改,删除等操作;绑定返回的数据到WebFormControl不需要缓存返回的数据,用完就释放using(IDataReaderreader=db.ExecuteReader(CommandType.Text,select*fromperson))4{DataGrid1.DataSource=reader;DataGrid1.DataBind();}5、执行ExecuteDataSet方法返回一个DataSetpublicDataSetGetPersonList(){Databasedb=DatabaseFactory.CreateDatabase();DbCommanddbcomm=db.GetSqlStringCommand(select*fromperson);returndb.ExecuteDataSet(dbcomm);}什么时候使用此方法:需要返回多表数据;如果你需要逐一访问数据库的每一条记录,这个时候如果使用DataReader的话,则会使与数据库的连接一直处于打开的状态,长此以往,就会使应用程序的性能和可伸缩性大大降低;需要和其他的应用程序交换数据;6、执行ExecuteNonQuery该方法返回的是SQL语句执行影响的行数,我们可以利用该方法来执行一些没有返回值的操作(Insert,Update,Delete)publicvoidAddPerson()5{Databasedb=DatabaseFactory.CreateDatabase();DbCommanddbcomm=db.GetSqlStringCommand(insertintopersonvalues(1,'shy','女','123456'));db.ExecuteNonQuery(dbcomm);}7、执行ExecuteScalar返回单值publicstringGetPersonName(){Databasedb=DatabaseFactory.CreateDatabase();DbCommanddbcomm=db.GetSqlStringCommand(selectnamefromperson);return(string)db.ExecuteScalar(dbcomm);}8、事务处理publicvoidUseTransaction(){Databasedb=DatabaseFactory.CreateDatabase();DbCommanddbcomm1=db.GetSqlStringCommand(updatepersonsetname='pw');DbCommanddbcomm2=db.GetSqlStringCommand(deletefrompersonwhereid=1);6using(DbConnectionconn=db.CreateConnection()){//打开连接conn.Open();//创建事务DbTransactiontrans=conn.BeginTransaction();try{db.ExecuteNonQuery(dbcomm1);db.ExecuteNonQuery(dbcomm2);//都执行成功则提交事务trans.Commit();}catch(Exception){//发生异常,事务回滚trans.Rollback();}//关闭连接conn.Close();}}79、执行ExecuteXmlReader返回XML数据支持SqlServer2000及以后版本的数据库,对微软以外的数据库应该不支持。publicvoidUseXMLReader(){SqlDatabasedbSQL=DatabaseFactory.CreateDatabase(ConnectionString)asSqlDatabase;//要返回XML数据需要在SQL语句后加FORXMLAUTOstringsqlCommand=SELECTProductID,ProductNameFROMProductsFORXMLAUTO;DbCommanddbCommand=dbSQL.GetSqlStringCommand(sqlCommand);XmlReaderpersonReader=null;StringBuilderpersonlist=newStringBuilder();try{personReader=dbSQL.ExecuteXmlReader(dbCommand);//循环向XML中写入我们查询得到的数据while(!personReader.EOF){if(personReader.IsStartElement()){personlist.Append(personReader.ReadOuterXml());8personlist.Append(Environment.NewLine);}}}finally{//关闭Reader.if(personReader!=null){personReader.Close();}//关闭数据库连接if(dbCommand.Connection!=null){dbCommand.Connection.Close();}}}10、用DataSet批量的添加,修改,删除数据publicvoidUpdateDataBase(){Databasedb=DatabaseFactory.CreateDatabase();9DataSetpersonDataSet=newDataSet();stringsqlCommand=Select*fromperson;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,Name,DataRowVersion.Current);db.AddInParameter(insertCommand,Sex,DbType.String,Sex,DataRowVersion.Current);db.AddInParameter(insertCommand,ID,DbType.Int32,ID,10DataRowVersion.Current);DbCommanddeleteCommand=db.GetStoredProcCommand(DeletePerson);db.AddInParameter(deleteCommand,ID,DbType.Int32,ID,DataRowVersion.Current);DbCommandupdateCommand=db.GetStoredProcCommand(UpdatePers

1 / 40
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功