一个支持SqlClient和OleDb的ADO.NET常用操作通用类

using System;
using System.Collections.Generic;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Data.OleDb;
/*
***************************************
*                                                                           *
*作者:GhostBear                                               *
*博客:http://blog.csdn.net/ghostbear  *
*                                                                           *
***************************************
*/
namespace AdoNetOmnipotence
{
    /// <summary>
    /// 操纵Ado.net的通用类(sql和oledb)
    /// </summary>
    public class Omnipotence
    {
        bool isSqlClient = true;//判断调用sqlclient还是oledb
        string connstr;//连接字符串
        SqlConnection sconn = null;
        OleDbConnection oconn = null;
        /// <summary>
        /// 初始化字符串
        /// </summary>
        /// <param name="connectionstring">连接字符串</param>
        public Omnipotence(string connectionstring)
        {
            this.connstr = connectionstring;
        }
        /// <summary>
        /// 指定连接字符串和操纵的目标
        /// </summary>
        /// <param name="connectionstring">连接字符串</param>
        /// <param name="issqlClient">操纵的目标</param>
        public Omnipotence(string connectionstring, bool issqlClient)
        {
            this.connstr = connectionstring;
            this.isSqlClient = issqlClient;
        }
        /// <summary>
        /// 打开连接
        /// </summary>
        private void Open()
        {
            if (isSqlClient)
            {
                if (sconn == null)
                    sconn = new SqlConnection(connstr);
                if (sconn.State == ConnectionState.Closed)
                    sconn.Open();
            }
            else
            {
                if (oconn == null)
                    oconn = new OleDbConnection(connstr);
                if (oconn.State == ConnectionState.Closed)
                    oconn.Open();
            }
        }
        /// <summary>
        /// 关闭连接
        /// </summary>
        private void Close()
        {
            if (isSqlClient)
            {
                if (sconn != null)
                    if (sconn.State == ConnectionState.Open)
                        sconn.Close();
            }
            else
            {
                if (oconn != null)
                    if (oconn.State == ConnectionState.Open)
                        oconn.Close();
            }
        }

        /*
***************************************
*                                                                           *
*作者:GhostBear                                               *
*博客:http://blog.csdn.net/ghostbear  *
*                                                                           *
***************************************
*/
        /// <summary>
        /// 返回command对象,可以是sqlcommand或oledbcommand
        /// </summary>
        /// <param name="sqlcmd">命令</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="param">参数</param>
        /// <returns>一个装箱的command对象</returns>
        private object command(string sqlcmd, bool isStored, IDataParameter[] param)
        {
            if (isSqlClient)
            {
                SqlCommand cmd = new SqlCommand(sqlcmd);    //初始化command
                cmd.Connection = sconn;                     //赋予连接对象
                if (isStored)
                    cmd.CommandType = CommandType.StoredProcedure;  //赋予命令类型
                else
                    cmd.CommandType = CommandType.Text;
                if (param != null)
                {
                    foreach (SqlParameter t in param)
                    {
                        cmd.Parameters.Add(t);          //参数数据库不为空则添加参数
                    }
                }
                return cmd;                             //返回sqlcommand
            }
            else
            {
                OleDbCommand cmd = new OleDbCommand(sqlcmd);    //初始化command
                cmd.Connection = oconn;                     //赋予连接对象
                if (isStored)
                    cmd.CommandType = CommandType.StoredProcedure;  //赋予命令类型
                else
                    cmd.CommandType = CommandType.Text;
                if (param != null)
                {
                    foreach (OleDbParameter t in param)
                    {
                        cmd.Parameters.Add(t);          //参数数据库不为空则添加参数
                    }
                }
                return cmd;                             //返回Oledbcommand
            }
        }
        /// <summary>
        /// 返回dataadapt对象
        /// </summary>
        /// <param name="command">command对象</param>
        /// <returns>一个装箱的dataadapter对象</returns>
        private object adapter(object command)  //返回DataAdpter类型的对象
        {
            object adpt;
            if (isSqlClient)
            {
                adpt = new SqlDataAdapter((SqlCommand)command);
            }
            else
            {
                adpt = new OleDbDataAdapter((OleDbCommand)command);
            }
            return adpt;
        }
/// <summary>
/// 执行操作。返回影响的行数
/// </summary>
/// <param name="sqlcmd">sql语句或存储过程名</param>
/// <param name="isStored">是否为存储过程</param>
/// <returns>语句执行影响的行数</returns>
/*
***************************************
*                                                                           *
*作者:GhostBear                                               *
*博客:http://blog.csdn.net/ghostbear  *
*                                                                           *
***************************************
*/
        public void RunProc(string sqlcmd, bool isStored,out int infectionRows)
        {
            SqlCommand scmd;
            OleDbCommand ocmd;
            Open();
            if (isSqlClient)
            {
                scmd = (SqlCommand)command(sqlcmd, isStored, null);
                infectionRows = scmd.ExecuteNonQuery();
                Close();
            }
            else
            {
                ocmd = (OleDbCommand)command(sqlcmd, isStored, null);
                infectionRows = ocmd.ExecuteNonQuery();
                Close();
            }
            return;
        }
        /// <summary>
        /// 执行操作。返回影响的行数
        /// </summary>
        /// <param name="sqlcmd">sql语句或存储过程名</param>
        /// <param name="isStored">是否为存储过程</param>
        /// <param name="param">执行所需要的参数</param>
        /// <returns>操作影响的行数</returns>
        public void RunProc(string sqlcmd, bool isStored, IDataParameter[] param,out int infectionRows)
        {
            SqlCommand scmd;
            OleDbCommand ocmd;
            Open();
            if (isSqlClient)
            {
                scmd = (SqlCommand)command(sqlcmd, isStored, param);

                infectionRows=scmd.ExecuteNonQuery();
                Close();
            }
            else
            {
                ocmd = (OleDbCommand)command(sqlcmd, isStored, param);

                infectionRows=ocmd.ExecuteNonQuery();
                Close();
            }
            return;
        }

        /*
***************************************
*                                                                           *
*作者:GhostBear                                               *
*博客:http://blog.csdn.net/ghostbear  *
*                                                                           *
***************************************
*/
        /// <summary>
        /// 返回数据集合中第一行第一列中的值
        /// </summary>
        /// <param name="sqlcmd">sql语句或存储过程名</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="isReturnContetn">返回值</param>
        /// <returns></returns>
        public void RunProc(string sqlcmd, bool isStored,out object isReturnContent)
        {
            SqlCommand scmd;
            OleDbCommand ocmd;
            Open();
            if (isSqlClient)
            {
                scmd = (SqlCommand)command(sqlcmd, isStored, null);

                isReturnContent = scmd.ExecuteScalar();
                Close();
            }
            else
            {
                ocmd = (OleDbCommand)command(sqlcmd, isStored, null);

                isReturnContent = ocmd.ExecuteScalar();
                Close();
            }
            return;
        }
        /// <summary>
        /// 返回数据集合中第一行第一列中的值
        /// </summary>
        /// <param name="sqlcmd">sql语句或存储过程名</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="param">参数集合</param>
        /// <param name="isReturnContent">返回值</param>
        /// <returns></returns>
        public void RunProc(string sqlcmd, bool isStored, IDataParameter[] param, out object 

isReturnContent)
        {
            SqlCommand scmd;
            OleDbCommand ocmd;
            Open();
            if (isSqlClient)
            {
                scmd = (SqlCommand)command(sqlcmd,isStored,param);

                isReturnContent = scmd.ExecuteScalar();
                Close();
            }
            else
            {
                ocmd = (OleDbCommand)command(sqlcmd, isStored, param);

                isReturnContent = ocmd.ExecuteScalar();
                Close();
            }
            return;
        }
        /*
***************************************
*                                                                           *
*作者:GhostBear                                               *
*博客:http://blog.csdn.net/ghostbear  *
*                                                                           *
***************************************
*/

        /// <summary>
        /// 返回sqldatareader对象
        /// </summary>
        /// <param name="sqlcmd">sql语句或存储过程</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="reader">输出sqldatareader的 out参数</param>
        public void RunProc(string sqlcmd, bool isStored,out SqlDataReader reader)
        {
            SqlCommand scmd;

           Open();
          scmd = (SqlCommand)command(sqlcmd, isStored, null);

           reader = scmd.ExecuteReader(CommandBehavior.CloseConnection);
            return;
        }
        /// <summary>
        /// 返回oledbdatareader对象
        /// </summary>
        /// <param name="sqlcmd">sql语句或存储过程</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="reader">输出oledbdatareader的 out参数</param>
    public void RunProc(string sqlcmd, bool isStored, out OleDbDataReader reader)
        {

            OleDbCommand ocmd;
            Open();

                ocmd = (OleDbCommand)command(sqlcmd, isStored, null);

                reader = ocmd.ExecuteReader(CommandBehavior.CloseConnection);

            return;
        }
        /// <summary>
        /// 返回oledbdatareader对象
        /// </summary>
        /// <param name="sqlcmd">sql语句或存储过程</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="param">命令的参数</param>
        /// <param name="reader">输出oledbdatareader的 out参数</param>
        public void RunProc(string sqlcmd, bool isStored, IDataParameter[] param, out SqlDataReader reader)

        {
            SqlCommand scmd;
            Open();
            scmd = (SqlCommand)command(sqlcmd, isStored,param);
            reader = scmd.ExecuteReader(CommandBehavior.CloseConnection);
            return;
        }
        /// <summary>
        /// 返回oledbdatareader对象
        /// </summary>
        /// <param name="sqlcmd">sql语句或存储过程名</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="param">命令参数</param>
        /// <param name="reader">输出参数</param>
        public void RunProc(string sqlcmd, bool isStored, IDataParameter[] param, out OleDbDataReader 

reader)
        {
            OleDbCommand ocmd;
            Open();
            ocmd = (OleDbCommand)command(sqlcmd, isStored, param);
            reader = ocmd.ExecuteReader(CommandBehavior.CloseConnection);
            return;
        }

        /*
***************************************
*                                                                           *
*作者:GhostBear                                               *
*博客:http://blog.csdn.net/ghostbear  *
*                                                                           *
***************************************
*/

        /// <summary>
        /// 返回dataset对象
        /// </summary>
        /// <param name="sqlcmd">sql语句或命令</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="ds">输出参数</param>
        public void RunProc(string sqlcmd, bool isStored, out DataSet ds)
        {
            SqlDataAdapter sadpt = null;
            OleDbDataAdapter oadpt = null;
            DataSet myds = new DataSet();
            if (isSqlClient)
            {
                Open();
                sadpt = (SqlDataAdapter)adapter(command(sqlcmd, isStored, null));

                sadpt.Fill(myds);
                Close();
            }
            else
            {
                Open();
                oadpt = (OleDbDataAdapter)adapter(command(sqlcmd, isStored, null));

                oadpt.Fill(myds);
                Close();
            }
            ds = myds;
            return;

        }

        /*
***************************************
*                                                                           *
*作者:GhostBear                                               *
*博客:http://blog.csdn.net/ghostbear  *
*                                                                           *
***************************************
*/
        /// <summary>
        /// 返回dataset对象
        /// </summary>
        /// <param name="sqlcmd">sql语句或命令</param>
        /// <param name="isStored">是否存储过程</param>
        /// <param name="param">参数</param>
        ///  <param name="ds">输出dataset</param>
        public void RunProc(string sqlcmd, bool isStored, IDataParameter[] param, out DataSet ds)
        {
            SqlDataAdapter sadpt = null;
            OleDbDataAdapter oadpt = null;
            DataSet myds = new DataSet();
            if (isSqlClient)
            {
                Open();
                sadpt = (SqlDataAdapter)adapter(command(sqlcmd, isStored,param));
                sadpt.Fill(myds);
                Close();
            }
            else
            {
                Open();
                oadpt = (OleDbDataAdapter)adapter(command(sqlcmd, isStored,param));
                oadpt.Fill(myds);
                Close();
            }
            ds = myds;
            return;
        }

    }
}

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索存储过程
, command
, 参数
, csdn博客
, oledbcommand
, sqlcommand
, net 字符串 bool
, oledbdatareader
, SQLCMD
ocmd
,以便于您获取更多的相关知识。

时间: 2024-10-29 23:36:11

一个支持SqlClient和OleDb的ADO.NET常用操作通用类的相关文章

c#-谁能用C#帮我实现一个支持拖拽的列表框/列表视图

问题描述 谁能用C#帮我实现一个支持拖拽的列表框/列表视图 需要一个示例代码 我没学过C# 我现在需要一份用C#实现的代码 和我用MFC实现的代码来比较两者的效率 希望各位大哥大姐帮帮忙 谢谢了 解决方案 C# 两个listView内部和相互拖拽,任意位置拖拽,不重复,自动排序

link中如何从Collection&amp;amp;lt;T&amp;amp;gt;派生一个支持Changed的集合?代码是怎样的?

问题描述 link中如何从Collection<T>派生一个支持Changed的集合?代码是怎样的? link中如何从Collection派生一个支持Changed的集合?代码是怎样的? 解决方案 实现INotiftyProperty

大家介绍一个支持ASP.NET的空间(当然还有域名)吧。最近想开个个人博客网站。

问题描述 大家介绍一个支持ASP.NET的空间(当然还有域名)吧.最近想开个个人博客网站. 解决方案 解决方案二:大家没有什么好推荐么?解决方案三:友情帮顶.解决方案四:联系我吧

每一个成功的NFV背后必有一个支持它的NFVI

人们认为NFV最大的优势就是其虚拟化网络的功能,它可以从根本上改变服务和应用程序交付的方式.但是,在这些功能背后,必须有一个支持它的网络功能虚拟化基础设施(NFVI),而这项技术目前还没有明确的定义. 很多厂商都宣称他们可以提供NFVI,但是他们的产品之间有很大区别,这就使得网络管理人员很难做出投资决策.好消息是,欧洲电信标准化协会(ETSI)的NFV ISG(网络功能虚拟化标准工作组)为了使NFVI环境可用,列出了几个关键的要素. NFVI的初始版本 从理论层次上来讲,NFVI是用来托管和连接

紧急求助:各位大侠,给小弟一个支持Office2007风格的VS2005控件包,跪求!!!

问题描述 老板要一个支持Office2007风格的VS2005控件包,限定今晚,小弟跪求了!!! 解决方案 解决方案二:这个~~现在有了吗?还在用旧的~~解决方案三:跪求????解决方案四:听老板的口气,好象有了,各位大侠,帮帮小弟吧:(解决方案五:dotnetbar去搜索一下 看楼主有没有用的上解决方案六:.net中的winformUI本来就慢,还用第三方控件.解决方案七:找一下Dev系列的.

一个方便AJAX开发的通用类

ajax  Name: AJAXRequest Author: HotHeart(xujiwei) Site: http://www.xujiwei.cn/ Blog: http://www.xujiwei.cn/blog/ Copyright (c) 2006, All Rights Reserved 类名:AJAXRequest 版本:0.3 日期:2006-12-18 介绍:AJAXRequest是一个方便AJAX开发的通用类,可以方便地进行一些AJAX中需要的操作,从而简化开发步骤,减少

PHP跳转函数和一个通用的操作提示类的编写

PHP 跳转,即重定向浏览器到指定的 URL,是一个很常见的功能.这种功能也有一些细节性的要求,比如等待多少秒以后跳转,用不用JavaScript实现跳转,等等.下面的跳转方法考虑到很多,并参数化,可以用到具体的项目当中. <?php /** * 重定向浏览器到指定的 URL * * @param string $url 要重定向的 url * @param int $delay 等待多少秒以后跳转 * @param bool $js 指示是否返回用于跳转的 JavaScript 代码 * @p

一个从网页tag里面分析url和url标题的类

一.不得不说的废话 我知道用 MSHTML 的 IHTMLDocument2 的 get_links 获取 IHTMLElementCollection 接口,通过 IHTMLElementCollection 来获取 IHTMLAnchorElement,再通过 IHTMLAnchorElement 接口的get_href 我们就可以得到网页的所有链接了!但这是用 MSHTML 的办法,就我本人而言,总喜欢自己来搞,不喜欢用看不到内部的东西(虽然 microsoft 写得比我的好).所以,我就

算法 编程-有一个M*N的0-1矩阵,对其操作以后要使每一行、每一列都只有1个1,求这个矩阵中1的最大个数?

问题描述 有一个M*N的0-1矩阵,对其操作以后要使每一行.每一列都只有1个1,求这个矩阵中1的最大个数? matlab编写,就像数字填图的游戏一样,其中的数字1-9在每一行和每一列都有唯一的一个.在一个M*N的0-1矩阵中,我想得到的是在原矩阵上操作,使其每一行和每一列都只有唯一的一个1,怎样才能使得变换后1的个数最多. 解决方案 这个问题我觉的可以转换成,求解n皇后问题,不知道对不对,楼主可以试试 解决方案二: 谢谢!感觉有点像,但是条件里面任意两个皇后都同一斜线上,这个不要,然后就是我已经