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,如需转载请自行联系原作者

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
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
相关文章
|
4天前
|
人工智能 量子技术 C#
【专栏】.NET 开发:开启数字化新时代
【4月更文挑战第29天】.NET开发在数字化新时代中发挥关键作用,借助跨平台能力、高性能和现代编程语言支持,如C#,助力企业实现数字化转型。通过企业级应用开发、移动应用和云计算集成,.NET加速业务流程和提升用户体验。未来,.NET将涉足AI、ML、MR/AR及量子计算,持续推动技术创新和数字化转型。开发者应提升技能,适应高性能需求,把握发展机遇。
|
4天前
|
缓存 监控 算法
【专栏】.NET 开发:实现卓越性能的途径
【4月更文挑战第29天】本文探讨了.NET开发中的性能优化,强调了理解性能问题根源和使用分析工具的重要性。基础优化包括代码优化(如减少计算、避免内存泄漏)、资源管理及选择合适算法。高级策略涉及并行编程、缓存策略、预编译(AOT)和微服务架构。持续性能测试与监控是关键,包括性能测试、监控分析和建立优化反馈循环。开发者应持续学习和实践性能优化,以构建高性能应用。
|
4天前
|
开发框架 .NET C#
【专栏】理解.NET 技术,提升开发水平
【4月更文挑战第29天】本文介绍了.NET技术的核心概念和应用,包括其跨平台能力、性能优化、现代编程语言支持及Web开发等特性。文章强调了深入学习.NET技术、关注社区动态、实践经验及学习现代编程理念对提升开发水平的重要性。通过这些,开发者能更好地利用.NET构建高效、可维护的多平台应用。
|
4天前
|
机器学习/深度学习 vr&ar 开发者
【专栏】.NET 技术:引领开发新方向
【4月更文挑战第29天】本文探讨了.NET技术如何引领软件开发新方向,主要体现在三方面:1) 作为跨平台开发的先锋,.NET Core支持多操作系统和移动设备,借助.NET MAUI创建统一UI,适应物联网需求;2) 提升性能和开发者生产力,采用先进技术和优化策略,同时更新C#语言特性,提高代码效率和可维护性;3) 支持现代化应用架构,包括微服务、容器化,集成Kubernetes和ASP.NET Core,保障安全性。此外,.NET还不断探索AI、ML和AR/VR技术,为软件开发带来更多创新可能。
|
4天前
|
物联网 vr&ar 开发者
【专栏】.NET 技术:为开发注入活力
【4月更文挑战第29天】本文探讨了.NET技术的创新,主要体现在三个方面:1) .NET Core实现跨平台开发革命,支持多种操作系统和硬件,如.NET MAUI用于多平台UI;2) 性能提升与生产力飞跃,C#新特性简化编程,JIT和AOT优化提升性能,Roslyn提供代码分析工具;3) 引领现代化应用架构,支持微服务、容器化,内置安全机制。未来,.NET 7将带来更多新特性和前沿技术整合,如量子计算、AI,持续推动软件开发创新。开发者掌握.NET技术将赢得竞争优势。
|
4天前
|
人工智能 前端开发 Cloud Native
【专栏】洞察.NET 技术的开发趋势
【4月更文挑战第29天】本文探讨了.NET技术的三大发展趋势:1) 跨平台与云原生技术融合,通过.NET Core支持轻量级、高性能应用,适应云计算和微服务;2) 人工智能与机器学习的集成,如ML.NET框架,使开发者能用C#构建AI模型;3) 引入现代化前端开发技术,如Blazor,实现前后端一致性。随着.NET 8等新版本的发布,期待更多创新技术如量子计算、AR/VR的融合,.NET将持续推动软件开发的创新与进步。
|
4天前
|
开发框架 物联网 测试技术
【专栏】.NET 开发:打造领先应用的基石
【4月更文挑战第29天】本文探讨了.NET开发框架为何成为构建领先应用的首选。高性能与稳定性是.NET的核心优势,它采用先进的技术和优化策略,如.NET Core的轻量级设计和JIT/AOT编译模式。跨平台兼容性让开发者能用相同代码库在不同操作系统上构建应用。现代化的开发体验,如C#语言的创新特性和Visual Studio的强大工具,提升了开发者生产力。丰富的生态系统和广泛支持,包括庞大的开发者社区和微软的持续投入,为.NET提供了坚实后盾。
|
4月前
|
开发框架 前端开发 .NET
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
ASP.NET CORE 3.1 MVC“指定的网络名不再可用\企图在不存在的网络连接上进行操作”的问题解决过程
45 0
|
8天前
|
开发框架 前端开发 JavaScript
JavaScript云LIS系统源码ASP.NET CORE 3.1 MVC + SQLserver + Redis医院实验室信息系统源码 医院云LIS系统源码
实验室信息系统(Laboratory Information System,缩写LIS)是一类用来处理实验室过程信息的软件,云LIS系统围绕临床,云LIS系统将与云HIS系统建立起高度的业务整合,以体现“以病人为中心”的设计理念,优化就诊流程,方便患者就医。
18 0
|
2月前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
32 0