开发者

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

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

    关于数据接口

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

    1、 Connection

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

    2、 Command

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

    3、 DataParameter

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

     ADO.NET 中的数据提供者对象提供了IDbConnectjsion、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 对象,其参数说明见下表:

    序号参数名类型说明
    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里,请注意参数为实体数据参数对象,如 MSLzmAJFo 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":
                     php   cmd = new DmLzmAJFoCommand(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 =(OracleParameterphp)para; 
    			break;
            case "dm8":
                para =  (DmParameter)pa;
                break;
            default: para =(SqlParameter)pa;
                break;
    	}
    	return pa;
    }

    小结

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

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新开发

    开发排行榜