ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)
2013-02-12 15:45
976 查看
ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)
接上文使用DataProvider前,需要先在web.config中配置以下节点,添加于<configSections></configSections>之间:
<IsLine.Data.Configuration>
<DataBaseConnection> <DBType>IsLine.Data.DataTypeEnum.DataBaseType.SqlServer</DBType>
<Server>Server IP</Server>
<UserID>sa</UserID>
<PwdType>Cryptography.Decrypting</PwdType> // or <PwdType>Cryptography.StrengthDecrypting</PwdType> or <PwdType>Cryptography.None</PwdType>
<Pwd>111111</Pwd>
<DataBase>UML</DataBase> //SqlServer only
</DataBaseConnection>
</IsLine.Data.Configuration>
其中DataBaseConnection指明数据库类型,PwdType指明密码加密策略,IsLine Provider内置3中策略供选择,如配置文件所示。以上示例为针对SqlServer,以下为Oralce节点配置方法:
<IsLine.Data.Configuration>
<DataBaseConnection> <DBType>IsLine.Data.Configuration.OracleConnectString</DBType>
<Server>TNS别名</Server>
<UserID>sa</UserID>
<PwdType>Cryptography.Decrypting</PwdType> // or <PwdType>Cryptography.StrengthDecrypting</PwdType> or <PwdType>Cryptography.None</PwdType>
<Pwd>111111</Pwd>
<OtherPlus>Provider=MSDAORA.1; Persist Security Info=False;</OtherPlus> //Oracle Only
</DataBaseConnection>
</IsLine.Data.Configuration>
或者可以使用以下简单配置方法,免去节点配置的麻烦:
SQLSERVER:
<add key=" IsLine.Data.Configuration.SqlServerConnectString " value="Data Source=Server IP;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />
ORACLE:
<add key="IsLine.Data.Configuration.OracleConnectString" value="Data Source=TNS别名;User;Password=111111;Integrated Security=no;Enlist=false;Pooling=true;" />
节点配置好后,使用以下方法调用,调用时分为面向连接与非连接两种方式,面向连接的操作(例如返回DataSet/Reader/Adapter等)使用前须进行实例化,使用后须调用.Dispost()方法释放资源,Dispost()是一个经过DataProvider重写的方法,一旦调用将会释放所有资源,包括Connection、Command、DataReader等,而面向非连接操作则直接调用即可。如果使用DataReader、Adapter等为面向连接操作,单纯执行sql语句为非连接操作,例如访问数据库单纯执行依据sql语句可以使用:
OracleProvider.ExecuteNonQuery();
或
SqlProvider.ExecuteNonQuery();
实例化例子:
OracleProvider op = new OracleProvider();
op.SomeFunc();
方法列表如下:
方法名称 | 说明 | 是否须实例化 |
OraBit2Bool | | 否 |
ExecuteScalar | 4次重载,传入sql语句后存储过程名称,返回首个元素 | 否 |
Bool2OraBit | | 否 |
ExecuteNonQuery | 5次重载,传入sql语句后存储过程名称,在数据库予以执行 | 否 |
ExecuteReader | 5次重载,传入sql语句后存储过程名称,返回对应类型的DataReader | 是 |
ExecuteDataSet | 5次重载,传入sql语句后存储过程名称,返回对应类型的DataSet | 是 |
ExecuteDataAdapter | 5次重载,传入sql语句后存储过程名称,返回对应类型的DataAdapter | 是 |
Dispose | 释放所有资源 | 是 |
conn | 为实例指定Connection | 是 |
cmd | 为实例指定Command | 是 |
参数名 | 参数类型 | 说明 |
cmdText | string | Sql语句或存储过程名 |
connectionKey | string | 连接串(仅当不使用web.config中配置节点中的数据库连接时使用,例如在一个项目中,有时会使用很多个数据库,主业务数据库、日志数据库等等,这时就可以将主业务数据库配置为默认数据库,使用日志数据库使用该参数传递) |
IsUsingOracleTransaction | bool | 是否启用事物处理(同事务中的sql语句之间使用“!”连接) |
cmdType | CommandType | 该参数指明“cmdText”参数是sql语句还是存储过程 |
commandParameters | Params System.Data.OracleClient.OracleParameter[] | 使用Params时使用 |
connection | OracleConnection | 作用与“connectionKey”相同,不过是实例化好了的 |
connection | SqlConnection | 同上 |
srcTable | string | 使用“ExecuteDataSet”方法时,填充表的名称 |
commandParameters | params System.Data.SqlClient.SqlParameter[] | 使用Params时使用 |
1.执行一句sql语句:
OracleProvider.ExecuteNonQuery(sql);
2.利用事务执行一批sql语句:OracleProvider.ExecuteNonQuery(sql,true,CommandType.Text,null);
3.执行一个存储过程:
OracleParameter[] OracleParam = new OracleParameter[6];
OracleParam[0] = new OracleParameter("ParameterName1", OracleType.VarChar, 32);
OracleParam[0].Value = "a";
OracleParam[1] = new OracleParameter("ParameterName2", OracleType.VarChar, 20);
OracleParam[1].Value = "b";
OracleProvider.ExecuteNonQuery(StoredProcedureName,null,CommandType.StoredProcedure, OracleParam);
返回一个DataReader
new OracleProvider().ExecuteReader(sql);
返回一个DataSet
OracleProvider().ExecuteDataSet(sql);
使用指定连接返回一个DataSet
new OracleProvider().ExecuteDataSet(sql,"ConnectionStr",0);
调用存储过程返回一个DataSet
new OracleProvider().ExecuteDataSet(sql,CommandType.StoredProcedure,"TestTable",null);
以上只是几个很简单的例子,总之使用DataProvider,就可以实现通过配置控制数据库,而代码层面只有操作语句,没有数据库连接、配置语句的目的了。
DataProvider中还有一个类“DBProvider”,这个Provider可以不指明是SQLSERVER还是Oracle数据库或是其他数据库,你需要提前遵守上文中提到的相关接口契约,实现为Configution.dll,并放置于约定位置(这个位置在web.config中配置),程序就会自动反射并使用其中的方法了。将来你更改数据库时,只需要更换这个DLL就可以了,不需要修改主程序。
“DBProvider”还封装了微软的DbProviderFactory,这个大家一定知道,我就不多介绍了,调用方法名称与方式与以上介绍的都一样。
相关文章推荐
- ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上)
- ASP.NET企业开发框架IsLine FrameWork系列之四--DataProvider 数据访问(上)
- ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下)
- ASP.NET企业开发框架IsLine FrameWork系列之六--DataProvider 数据访问(下)
- ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)
- ASP.NET企业开发框架IsLine FrameWork系列之七--AppLogProvider日志框架(上)
- ASP.NET企业开发框架IsLine FrameWork系列之七--AppLogProvider日志框架(上)
- ASP.NET企业开发框架IsLine FrameWork系列之八--AppLogProvider日志框架(下)
- ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上)
- 使用IsLine FrameWork开发ASP.NET程序之二—使用DataProvider 访问数据 (上)
- ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下)
- ASP.NET企业开发框架IsLine FrameWork系列之十--ExceptionProcessProvider异常框架(下)
- 使用IsLine FrameWork开发ASP.NET程序之三—使用DataProvider 访问数据(下)
- ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存
- ASP.NET企业开发框架IsLine FrameWork系列之九--ExceptionProcessProvider异常框架(上)
- ASP.NET企业开发框架IsLine FrameWork系列之十一--HttpContentProvider 访问缓存
- ASP.NET企业开发框架IsLine FrameWork系列之八--AppLogProvider日志框架(下)
- ABP(现代ASP.NET样板开发框架)系列之13、ABP领域层——数据过滤器(Data filters)
- ASP.NET企业开发框架IsLine FrameWork系列之一--第一次的亲密接触
- ASP.NET企业开发框架IsLine FrameWork系列之十二--使用Session、Cookie与安全支持