目录
  • 关于数据接口
  • 对象执行流程
  • 范例运行环境
  • 设计与实现
    • 引用
    • GetConnection方法
    • GetCommand方法
    • GetParameter方法
  • 小结

    关于数据接口

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

    1、 Connection

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

    2、 Command

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

    3、 DataParameter

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

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

    对象执行流程

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

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

    范例运行环境

    操作系统: 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 对象,其参数说明见下表:

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

    实现代码如下:

    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 对象,其参数说明见下表:

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

    cmdText

    string 要执行的SQL语句命令行
    3 paras ArrayList

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

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

    4 con IDbConnection 要传递的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 对象,其参数说明见下表:

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

    实现代码如下:

    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;
    }

    小结

    声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。