ASP.NET企业开发框架IsLine FrameWork系列之五--DataProvider 数据访问(中)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
简介:
+关注继续查看

接上文

    使用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.执行一个存储过程:

  1. 复制代码
    
    
    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);

  1. 返回一个DataSet

OracleProvider().ExecuteDataSet(sql);

  1. 使用指定连接返回一个DataSet

new OracleProvider().ExecuteDataSet(sql,"ConnectionStr",0);

  1. 调用存储过程返回一个DataSet

    new OracleProvider().ExecuteDataSet(sql,CommandType.StoredProcedure,"TestTable",null);

 

    以上只是几个很简单的例子,总之使用DataProvider,就可以实现通过配置控制数据库,而代码层面只有操作语句,没有数据库连接、配置语句的目的了。

DataProvider中还有一个类“DBProvider”,这个Provider可以不指明是SQLSERVER还是Oracle数据库或是其他数据库,你需要提前遵守上文中提到的相关接口契约,实现为Configution.dll,并放置于约定位置(这个位置在web.config中配置),程序就会自动反射并使用其中的方法了。将来你更改数据库时,只需要更换这个DLL就可以了,不需要修改主程序。

  “DBProvider”还封装了微软的DbProviderFactory,这个大家一定知道,我就不多介绍了,调用方法名称与方式与以上介绍的都一样。

 本文转自Aicken(李鸣)博客园博客,原文链接:http://www.cnblogs.com/isline/archive/2009/12/23/1630785.html,如需转载请自行联系原作者

相关实践学习
使用交互方式创建数据表
本次实验主要介绍如何在RDS-SQLServer数据库中使用交互方式创建数据表。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS&nbsp;SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情:&nbsp;https://www.aliyun.com/product/rds/sqlserver
相关文章
|
SQL 存储 XML
ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法
ASP.NET Core 实战:基于 Dapper 扩展你的数据访问方法 一、前言 在非静态页面的项目开发中,必定会涉及到对于数据库的访问,最开始呢,我们使用 Ado.Net,通过编写 SQL 帮助类帮我们实现对于数据库的快速访问,后来,ORM(Object Relational Mapping,对象关系映射)出现了,我们开始使用 EF、Dapper、NHibernate,亦或是国人的 SqlSugar 代替我们原来的 SqlHelper.cs。
4059 0
|
SQL .NET 数据库
ASP.NET CORE系列【六】Entity Framework Core 之数据迁移
原文:ASP.NET CORE系列【六】Entity Framework Core 之数据迁移 前言 最近打算用.NET Core写一份简单的后台系统,来练练手 然后又用到了Entity Framework Core  发现园子里有些文章讲得不是那么细节,对于新手小白来说,可能会有点懵。
1479 0
|
.NET 开发框架 中间件
ASP.NET CORE系列【三】使用Entity Framework Core进行增删改查
原文:ASP.NET CORE系列【三】使用Entity Framework Core进行增删改查 身份验证 以前我们熟悉的web.config中配置的form验证,现在没有了。我们来看看在Core里面如何配置; 首先需要NuGet安装一个包:Microsoft.
1729 0
|
.NET 数据库 开发框架
ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查
原文:ASP.NET CORE系列【二】使用Entity Framework Core进行增删改查 介绍 EntityFrameworkCore EF core 是一个轻量级的,可扩展的EF的跨平台版本。
1589 0
|
.NET Shell 数据库
ASP.Net Core项目在Mac上使用Entity Framework Core 2.0进行迁移可能会遇到的一个问题.
在ASP.Net Core 2.0的项目里, 我使用Entity Framework Core 2.0 作为ORM. 有人习惯把数据库的连接字符串写在appSettings.json里面, 有的习惯写死在程序里, 有的习惯把它放在launchSettings.
1315 0
推荐文章
更多