C#实现IDbConnection/IDbCommand等相关通用数据接口

 更新时间:2024年04月29日 09:13:33   作者:初九之潜龙勿用  
ADO.NET 中的数据提供者对象提供了IDbConnection、IDbCommand、IDbDataParameter等通用数据接口,本文将利用这些对象实现一个通用方法以访问和操作数据库内容,需要的朋友可以参考下

关于数据接口

在.net 应用中,与数据库进行连接、访问和执行经常会用到数据接口的相关对象,如下:

1、 Connection

表示一个到数据库的打开的连接,是连接数据必不可少的对象。

2、 Command

命令对象,表示要对数据源连接执行的 SQL 语句或存储过程,以获取返回结果或执行返回值。

3、 DataParameter

用于表示Command命令对象需要的参数设置,虽然这是一个可选项,但在实际的应用中几乎都会使用到

 ADO.NET 中的数据提供者对象提供了IDbConnection、IDbCommand、IDbDataParameter等通用数据接口,本文将利用这些对象实现一个通用方法以访问和操作数据库内容。

对象执行流程

首先需要创建连接对象,成功后下达符合对应数据库规范的命令指令,该指令可能包括需要的参数对象(需要定义名称和赋值等操作),大体流程如下图:

范例运行环境

操作系统: Windows Server 2019 DataCenter

.net版本: .netFramework4.7.1 或以上

开发工具:VS2019  C#

数据库:在这里我们以支持 Oracle 9i、MS SQL Server 2016、国产达梦数据 8 为例

设计与实现

引用

在实现方法前请引用如下代码:

using System.Data;
using System.Data.SqlClient;
using System.Data.OracleClient;
using Dm;
using System.Collections;

GetConnection方法

GetConnection 方法返回 System.Data.IDbConnection 对象,其参数说明见下表:

序号参数名类型说明
1DbServerTypestring目前支持 "oracle"、 "dm8",其它字符串均视为 MS SQL Server
2ConnectionStringstring对应数据库的连接字符串

实现代码如下:

public System.Data.IDbConnection GetConnection(string DbServerType,string ConnectionString)
{
	IDbConnection con = null;
	switch (DbServerType.ToLower())
	{
		case "oracle":
			con = new OracleConnection(ConnectionString);break;
        case "dm8":
            con = new DmConnection(ConnectionString); break;
        default:
			con = new SqlConnection(ConnectionString);   break;
	}
 
	return con;
 
}

GetCommand方法

GetCommand 方法返回 System.Data.IDbCommand 对象,其参数说明见下表:

序号参数名类型说明
1dbServerTypestring目前支持 "oracle"、 "dm8",其它字符串均视为 MS SQL Server
2

cmdText

string要执行的SQL语句命令行
3parasArrayList

要赋值的参数对象,逐个添加到ArrayList里,请注意参数为实体数据参数对象,如 MS SQL Server ,请传递如下代码:

ArrayList.Add(new SqlParameter("参数名",参数值)); 

4conIDbConnection要传递的Connection对象,可能过前面所述的GetConnection方法获取

实现代码如下:

public IDbCommand GetCommand(string dbservertype,string cmdText,ArrayList paras,IDbConnection con)
		{
			IDbCommand cmd = null;
			switch (dbservertype.ToLower())
			{
				case "oracle": cmd = new OracleCommand(cmdText,(OracleConnection)con);
					break;
                case "dm8":
                    cmd = new DmCommand(cmdText, (DmConnection)con);
                    break;
                default:    cmd = new SqlCommand(cmdText,(SqlConnection)con);        break;
			}
			if(paras!=null)
			{
				for(int i=0;i<paras.Count;i++)
				{
					cmd.Parameters.Add(GetParameter(dbservertype,paras[i]));
				}
			}
			return cmd;
		}

请注意,代码中的 GetParameter 方法我们将后续做介绍。

GetParameter方法

GetParameter 方法返回 System.Data.IDbDataParameter 对象,其参数说明见下表:

序号参数名类型说明
1dbServerTypestring目前支持 "oracle"、 "dm8",其它字符串均视为 MS SQL Server
2paraobject传递的单一参数对象

实现代码如下:

public System.Data.IDbDataParameter GetParameter(string dbservertype,object para)
{
	IDbDataParameter pa = null;
	switch (dbservertype.ToLower())
	{
 
		case "oracle": pa =(OracleParameter)para; 
			break;
        case "dm8":
            para =  (DmParameter)pa;
            break;
        default: para =(SqlParameter)pa;
            break;
	}
	return pa;
}

小结

到此这篇关于C#实现IDbConnection/IDbCommand等相关通用数据接口的文章就介绍到这了,更多相关C#实现IDbConnection/IDbCommand接口内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 详解C#如何将枚举以下拉数据源的形式返回给前端

    详解C#如何将枚举以下拉数据源的形式返回给前端

    这篇文章主要为大家详细介绍了C#如何实现将枚举以下拉数据源的形式返回给前端,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2023-06-06
  • c#二维码生成的代码分享

    c#二维码生成的代码分享

    c#生成二维码实现示例代码分享,生成方法是调用外网API,为了不直接调用别人的接口,创建一个QrImg.aspx用于显示二维码,传参数即可
    2013-12-12
  • C#根据反射和特性实现ORM映射实例分析

    C#根据反射和特性实现ORM映射实例分析

    这篇文章主要介绍了C#根据反射和特性实现ORM映射的方法,实例分析了反射的原理、特性与ORM的实现技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • C# WinForm-Timer控件的使用

    C# WinForm-Timer控件的使用

    这篇文章主要介绍了C# WinForm-Timer控件的使用,帮助大家更好的理解和学习c# winform,感兴趣的朋友可以了解下
    2020-11-11
  • KMP算法的C#实现方法

    KMP算法的C#实现方法

    这篇文章主要介绍了KMP算法的C#实现方法,代码简洁实用,需要的朋友可以参考下
    2014-09-09
  • 浅谈C#中Md5和Sha1两种加密方式

    浅谈C#中Md5和Sha1两种加密方式

    这篇文章主要介绍了浅谈C#中Md5和Sha1两种加密方式的相关资料,需要的朋友可以参考下
    2015-07-07
  • C#判断三角形的类型

    C#判断三角形的类型

    这篇文章主要介绍了C#判断三角形的类型的方法,通过输入三角形的三条边长,判断是否能构成一个三角形,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • C#使用Ado.Net更新和添加数据到Excel表格的方法

    C#使用Ado.Net更新和添加数据到Excel表格的方法

    这篇文章主要介绍了C#使用Ado.Net更新和添加数据到Excel表格的方法,较为详细的分析了OLEDB的原理与使用技巧,可实现较为方便的操作Excel数据,需要的朋友可以参考下
    2015-04-04
  • asp.net(C#)清除全部Session与单个Session的方法

    asp.net(C#)清除全部Session与单个Session的方法

    下面小编就为大家带来一篇asp.net(C#)清除全部Session与单个Session的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-12-12
  • C#实现扫描局域网内的所有IP和端口

    C#实现扫描局域网内的所有IP和端口

    这篇文章主要为大家详细介绍了如何利用C#实现扫描局域网内的所有IP和端口的功能,文中的示例代码讲解详细,对我们学习C#有一定的帮助,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12

最新评论