登录  /  注册

C#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle)

黄舟
发布: 2017-02-25 11:18:50
原创
2679人浏览过

在app.config文件中写上数据库中连接信息:
<appSettings>
    <add key="connectionstring" value="Data Source=LocalHost;Initial Catalog=Test001;
    User ID=sa;Password=aaaaaa" />
    <add key="DataType" value="SqlServer" />
 </appSettings>
app.config文件中代码解析:
<appSettings>
    <add key="connectionstring" value="Data Source=你的数据库器(本机可用LocalHost,如果是EXPRESS开发版则必须是.\SQLEXPRESS);
    Initial Catalog=数据库名字;
    User ID=用户名;Password=你自己的密码" />
    <add key="TemplatePATH" value="Template" />
</appSettings>
登录后复制

小注:

同理web程序,可以把数据库连接信息放到web.config中。

C#.NET万能数据库访问封装类代码如下:(该代码来自百度文库,非自己编写)

<pre code_snippet_id="147172" snippet_file_name="blog_20140108_1_6139061" class="html" name="code">
<div><pre code_snippet_id="147172" snippet_file_name="blog_20140108_1_6139061" class="prettyprint" name="code">
<pre code_snippet_id="147172" snippet_file_name="blog_20140108_1_6139061" class="csharp" name="code">using System;  
using System.Linq;  
using System.Text;  
using System.Collections;  
using System.Collections.Specialized;  
using System.Data;  
using System.Data.SqlClient;  
using System.Data.OleDb;  
using System.Data.OracleClient;  
using System.Configuration;  
using System.Reflection;  
  
namespace SystemFramework.DAL  
{  
    class DataBaseLayer  
    {  
        #region  属性变量     
        private string connectionString;  
        public string ConntionString  
        {  
            get  
            {  
                return connectionString;  
            }  
            set  
            {  
                connectionString = value;  
            }  
        }  
        //数据访问基础类--构造函数  
        public DataBaseLayer(string strConnect, string dataType)  
        {  
            this.ConntionString = strConnect;  
            this.DbType = dataType;  
        }  
        //数据访问基础类--构造函数  
        public DataBaseLayer()  
        {  
            this.connectionString =ConfigurationManager.AppSettings["ConnectionString"];  
            this.dbType =ConfigurationManager.AppSettings["DataType"];  
            //也可以在代码中直接赋值  
            //this.connectionString = "data source=192.168.1.43;user id=sa;pwd=sa;database=temphrdb";  
            //this.dbType = "SqlServer";  
        }  
        /// <summary>  
        /// 数据库类型   
        /// </summary>  
        private string dbType;  
        public string DbType  
        {  
            get  
            {  
                if (string.IsNullOrEmpty(dbType))  
                {  
                    return "Access";  
                }  
                else  
                {  
                    return dbType;  
                }  
            }  
            set  
            {  
                if (value != string.Empty && value != null)  
                {  
                    dbType = value;  
                }  
                if (string.IsNullOrEmpty(dbType))  
                {  
                    dbType =ConfigurationManager.AppSettings["DataType"];  
                }  
                if (string.IsNullOrEmpty(dbType))  
                {  
                    dbType = "Access";  
                }  
            }  
        }  
        #endregion  
        #region 转换参数  
        private System.Data.IDbDataParameter iDbPara(string ParaName, string DataType)  
        {  
            switch (this.DbType)  
            {  
                case "SqlServer":  
                    return GetSqlPara(ParaName, DataType);  
                case "Oracle":  
                    return GetOleDbPara(ParaName, DataType);  
                case "Access":  
                    return GetOleDbPara(ParaName, DataType);  
                default:  
                    return GetSqlPara(ParaName, DataType);  
            }  
        }  
  
        private SqlParameter GetSqlPara(string ParaName, string DataType)  
        {  
            switch (DataType)  
            {  
                case "Decimal":  
                    return new SqlParameter(ParaName, SqlDbType.Decimal);  
                case "Varchar":  
                    return new SqlParameter(ParaName, SqlDbType.VarChar);  
                case "DateTime":  
                    return new SqlParameter(ParaName, SqlDbType.DateTime);  
                case "Iamge":  
                    return new SqlParameter(ParaName, SqlDbType.Image);  
                case "Int":  
                    return new SqlParameter(ParaName, SqlDbType.Int);  
                case "Text":  
                    return new SqlParameter(ParaName, SqlDbType.NText);  
                default:  
                    return new SqlParameter(ParaName, SqlDbType.VarChar);  
            }  
        }  
        private OracleParameter GetOraclePara(string ParaName, string DataType)  
        {  
            switch (DataType)  
            {  
                case "Decimal":  
                    return new OracleParameter(ParaName, OracleType.Double);  
                case "Varchar":  
                    return new OracleParameter(ParaName, OracleType.VarChar);  
                case "DateTime":  
                   return new OracleParameter(ParaName, OracleType.DateTime);  
                case "Iamge":  
                    return new OracleParameter(ParaName, OracleType.BFile);  
                case "Int":  
                    return new OracleParameter(ParaName, OracleType.Int32);  
                case "Text":  
                    return new OracleParameter(ParaName, OracleType.LongVarChar);  
                default:  
                    return new OracleParameter(ParaName, OracleType.VarChar);  
  
            }  
        }  
        private OleDbParameter GetOleDbPara(string ParaName, string DataType)  
        {  
            switch (DataType)  
            {  
                case "Decimal":  
                    return new OleDbParameter(ParaName, System.Data.DbType.Decimal);  
                case "Varchar":  
                    return new OleDbParameter(ParaName, System.Data.DbType.String);  
                case "DateTime":  
                    return new OleDbParameter(ParaName, System.Data.DbType.DateTime);  
                case "Iamge":  
                    return new OleDbParameter(ParaName, System.Data.DbType.Binary);  
                case "Int":  
                    return new OleDbParameter(ParaName, System.Data.DbType.Int32);  
                case "Text":  
                    return new OleDbParameter(ParaName, System.Data.DbType.String);  
                default:  
                    return new OleDbParameter(ParaName, System.Data.DbType.String);  
            }  
        }  
        #endregion  
        #region 创建 Connection 和 Command  
        private IDbConnection GetConnection()  
        {  
            switch (this.DbType)  
            {  
                case "SqlServer":  
                    return new SqlConnection(this.ConntionString);  
                case "Oracle":  
                    return new OracleConnection(this.ConntionString);  
                case "Access":  
                    return new OleDbConnection(this.ConntionString);  
                default:  
                    return new SqlConnection(this.ConntionString);  
            }  
        }  
        private IDbCommand GetCommand(string Sql, IDbConnection iConn)  
        {  
            switch (this.DbType)  
            {  
                case "SqlServer":  
                    return new SqlCommand(Sql, (SqlConnection)iConn);  
                case "Oracle":  
                    return new OracleCommand(Sql, (OracleConnection)iConn);  
                case "Access":  
                    return new OleDbCommand(Sql, (OleDbConnection)iConn);  
                default:  
                    return new SqlCommand(Sql, (SqlConnection)iConn);  
            }  
        }  
        private IDbCommand GetCommand()  
        {  
            switch (this.DbType)  
            {  
                case "SqlServer":  
                    return new SqlCommand();  
                case "Oracle":  
                    return new OracleCommand();  
                case "Access":  
                    return new OleDbCommand();  
                default:  
                    return new SqlCommand();  
            }  
        }  
        private IDataAdapter GetAdapater(string Sql, IDbConnection iConn)  
        {  
            switch (this.DbType)  
            {  
                case "SqlServer":  
                    return new SqlDataAdapter(Sql, (SqlConnection)iConn);  
                case "Oracle":  
                    return new OracleDataAdapter(Sql, (OracleConnection)iConn);  
                case "Access":  
                    return new OleDbDataAdapter(Sql, (OleDbConnection)iConn);  
                default:  
                    return new SqlDataAdapter(Sql, (SqlConnection)iConn); ;  
            }  
        }  
        private IDataAdapter GetAdapater()  
        {  
            switch (this.DbType)  
            {  
                case "SqlServer":  
                    return new SqlDataAdapter();  
                case "Oracle":  
                    return new OracleDataAdapter();  
                case "Access":  
                    return new OleDbDataAdapter();  
                default:  
                    return new SqlDataAdapter();  
            }  
        }  
        private IDataAdapter GetAdapater(IDbCommand iCmd)  
        {  
            switch (this.DbType)  
            {  
                case "SqlServer":  
                    return new SqlDataAdapter((SqlCommand)iCmd);  
                case "Oracle":  
                    return new OracleDataAdapter((OracleCommand)iCmd);  
                case "Access":  
                    return new OleDbDataAdapter((OleDbCommand)iCmd);  
                default:  
                    return new SqlDataAdapter((SqlCommand)iCmd);  
            }  
        }  
        #endregion  
        #region  执行简单SQL语句  
        /// <summary>  
        /// 执行SQL语句,返回影响的记录数  
        /// </summary>  
        /// <param name="SQLString">SQL语句</param>  
        /// <returns>影响的记录数</returns>  
        public int ExecuteSql(string SqlString)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
                {  
                    iConn.Open();  
                    try  
                    {  
                        int rows = iCmd.ExecuteNonQuery();  
                        return rows;  
                    }  
                    catch (System.Exception E)  
                    {  
                        throw new Exception(E.Message);  
                    }  
                    finally  
                    {  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行多条SQL语句,实现数据库事务。  
        /// </summary>  
        /// <param name="SQLStringList">多条SQL语句</param>          
        public void ExecuteSqlTran(ArrayList SQLStringList)  
        {  
            //using作为语句,用于定义一个范围,在此范围的末尾将释放对象  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                iConn.Open();  
                using (IDbCommand iCmd = GetCommand())  
                {  
                    iCmd.Connection = iConn;  
                    using (System.Data.IDbTransaction iDbTran = iConn.BeginTransaction())  
                    {  
                        iCmd.Transaction = iDbTran;  
                        try  
                        {  
                            for (int n = 0; n < SQLStringList.Count; n++)  
                            {  
                                string strsql = SQLStringList[n].ToString();  
                                if (strsql.Trim().Length > 1)  
                                {  
                                    iCmd.CommandText = strsql;  
                                    iCmd.ExecuteNonQuery();  
                                }  
                            }  
                            iDbTran.Commit();  
                        }  
                        catch (System.Exception E)  
                        {  
                            iDbTran.Rollback();  
                            throw new Exception(E.Message);  
                        }  
                        finally  
                        {  
                            if (iConn.State != ConnectionState.Closed)  
                            {  
                                iConn.Close();  
                            }  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行带一个存储过程参数的的SQL语句。  
        /// </summary>  
        /// <param name="SQLString">SQL语句</param>  
        /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>  
        /// <returns>影响的记录数</returns>  
        public int ExecuteSql(string SqlString, string content)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
                {  
                    IDataParameter myParameter = this.iDbPara("@content", "Text");  
                    myParameter.Value = content;  
                    iCmd.Parameters.Add(myParameter);  
                    iConn.Open();  
                    try  
                    {  
                        int rows = iCmd.ExecuteNonQuery();  
                        return rows;  
                    }  
                    catch (System.Exception e)  
                    {  
                        throw new Exception(e.Message);  
                    }  
                    finally  
                    {  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)  
        /// </summary>  
        /// <param name="strSQL">SQL语句</param>  
        /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>  
        /// <returns>影响的记录数</returns>  
        public int ExecuteSqlInsertImg(string SqlString, byte[] fs)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
                {  
                    IDataParameter myParameter = this.iDbPara("@content", "Image");  
                    myParameter.Value = fs;  
                    iCmd.Parameters.Add(myParameter);  
                    iConn.Open();  
                    try  
                    {  
                        int rows = iCmd.ExecuteNonQuery();  
                        return rows;  
                    }  
                    catch (System.Exception e)  
                    {  
                        throw new Exception(e.Message);  
                    }  
                    finally  
                    {  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行一条计算查询结果语句,返回查询结果(object)。  
        /// </summary>  
        /// <param name="SQLString">计算查询结果语句</param>  
        /// <returns>查询结果(object)</returns>  
        public object GetSingle(string SqlString)  
        {  
            using (IDbConnection iConn = GetConnection())  
            {  
                using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
                {  
                    iConn.Open();  
                    try  
                    {  
                        object obj = iCmd.ExecuteScalar();  
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                        {  
                            return null;  
                        }  
                        else  
                        {  
                            return obj;  
                        }  
                    }  
                    catch (System.Exception e)  
                    {  
                        throw new Exception(e.Message);  
                    }  
                    finally  
                    {  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }       
        /// <summary>  
        /// 执行查询语句,返回IDataAdapter  
        /// </summary>  
        /// <param name="strSQL">查询语句</param>  
        /// <returns>IDataAdapter</returns>  
        public IDataAdapter ExecuteReader(string strSQL)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                iConn.Open();  
                try  
                {  
                    IDataAdapter iAdapter = this.GetAdapater(strSQL, iConn);  
                    return iAdapter;  
                }  
                catch (System.Exception e)  
                {  
                    throw new Exception(e.Message);  
                }  
                finally  
                {  
                    if (iConn.State != ConnectionState.Closed)  
                    {  
                        iConn.Close();  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行查询语句,返回DataSet  
        /// </summary>  
        /// <param name="SQLString">查询语句</param>  
        /// <returns>DataSet</returns>  
        public DataSet Query(string sqlString)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                using (IDbCommand iCmd = GetCommand(sqlString, iConn))  
                {  
                    DataSet ds = new DataSet();  
                    iConn.Open();  
                    try  
                    {  
                        IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
                        iAdapter.Fill(ds);  
                        return ds;  
                    }  
                    catch (System.Exception ex)  
                    {  
                        throw new Exception(ex.Message);  
                    }  
                    finally  
                    {  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行查询语句,返回DataSet  
        /// </summary>  
        /// <param name="sqlString">查询语句</param>  
        /// <param name="dataSet">要填充的DataSet</param>  
        /// <param name="tableName">要填充的表名</param>  
        /// <returns>DataSet</returns>  
        public DataSet Query(string sqlString, DataSet dataSet, string tableName)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                using (IDbCommand iCmd = GetCommand(sqlString, iConn))  
                {  
                    iConn.Open();  
                    try  
                    {  
                        IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
                        ((OleDbDataAdapter)iAdapter).Fill(dataSet, tableName);  
                        return dataSet;  
                    }  
                    catch (System.Exception ex)  
                    {  
                        throw new Exception(ex.Message);  
                    }  
                    finally  
                    {  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行SQL语句 返回存储过程  
        /// </summary>  
        /// <param name="sqlString">Sql语句</param>  
        /// <param name="dataSet">要填充的DataSet</param>  
        /// <param name="startIndex">开始记录</param>  
        /// <param name="pageSize">页面记录大小</param>  
        /// <param name="tableName">表名称</param>  
        /// <returns>DataSet</returns>  
        public DataSet Query(string sqlString, DataSet dataSet, int startIndex, int pageSize, string tableName)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                iConn.Open();  
                try  
                {  
                    IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
  
                    ((OleDbDataAdapter)iAdapter).Fill(dataSet, startIndex, pageSize, tableName);  
  
                    return dataSet;  
                }  
                catch (Exception ex)  
                {  
                    throw new Exception(ex.Message);  
                }  
                finally  
                {  
                    if (iConn.State != ConnectionState.Closed)  
                    {  
                        iConn.Close();  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行查询语句,向XML文件写入数据  
        /// </summary>  
        /// <param name="sqlString">查询语句</param>  
        /// <param name="xmlPath">XML文件路径</param>  
        public void WriteToXml(string sqlString, string xmlPath)  
        {  
            Query(sqlString).WriteXml(xmlPath);  
        }  
        /// <summary>  
        /// 执行查询语句  
        /// </summary>  
        /// <param name="SqlString">查询语句</param>  
        /// <returns>DataTable </returns>  
        public DataTable ExecuteQuery(string sqlString)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                //IDbCommand iCmd  =  GetCommand(sqlString,iConn);  
                DataSet ds = new DataSet();  
                try  
                {  
                    IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
                    iAdapter.Fill(ds);  
                }  
                catch (System.Exception e)  
                {  
                    throw new Exception(e.Message);  
                }  
                finally  
                {  
                    if (iConn.State != ConnectionState.Closed)  
                    {  
                        iConn.Close();  
                    }  
                }  
                return ds.Tables[0];  
            }  
        }  
        /// <summary>  
        /// 执行查询语句  
        /// </summary>  
        /// <param name="SqlString">查询语句</param>  
        /// <returns>DataTable </returns>  
        public DataTable ExecuteQuery(string SqlString, string Proc)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                using (IDbCommand iCmd = GetCommand(SqlString, iConn))  
                {  
                    iCmd.CommandType = CommandType.StoredProcedure;  
                    DataSet ds = new DataSet();  
                    try  
                    {  
                        IDataAdapter iDataAdapter = this.GetAdapater(SqlString, iConn);  
                        iDataAdapter.Fill(ds);  
                    }  
                    catch (System.Exception e)  
                    {  
                        throw new Exception(e.Message);  
                    }  
                    finally  
                    {  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                    return ds.Tables[0];  
                }  
            }  
        }  
        /// <summary>  
        /// 执行查询,并以DataView返回结果集   
        /// </summary>  
        /// <param name="Sql">SQL语句</param>  
        /// <returns>DataView</returns>  
        public DataView ExeceuteDataView(string Sql)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                using (IDbCommand iCmd = GetCommand(Sql, iConn))  
                {  
                    DataSet ds = new DataSet();  
                    try  
                    {  
                        IDataAdapter iDataAdapter = this.GetAdapater(Sql, iConn);  
                        iDataAdapter.Fill(ds);  
                        return ds.Tables[0].DefaultView;  
                    }  
                    catch (System.Exception e)  
                    {  
                        throw new Exception(e.Message);  
                    }  
                    finally  
                    {  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        #endregion  
        #region 执行带参数的SQL语句  
        /// <summary>  
        /// 执行SQL语句,返回影响的记录数  
        /// </summary>  
        /// <param name="SQLString">SQL语句</param>  
        /// <returns>影响的记录数</returns>  
        public int ExecuteSql(string SQLString, params IDataParameter[] iParms)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                IDbCommand iCmd = GetCommand();  
                {  
                    try  
                    {  
                        PrepareCommand(out iCmd, iConn, null, SQLString, iParms);  
                        int rows = iCmd.ExecuteNonQuery();  
                        iCmd.Parameters.Clear();  
                        return rows;  
                    }  
                    catch (System.Exception E)  
                    {  
                        throw new Exception(E.Message);  
                    }  
                    finally  
                    {  
                        iCmd.Dispose();  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行多条SQL语句,实现数据库事务。  
        /// </summary>  
        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的SqlParameter[])</param>  
        public void ExecuteSqlTran(Hashtable SQLStringList)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                iConn.Open();  
                using (IDbTransaction iTrans = iConn.BeginTransaction())  
                {  
                    IDbCommand iCmd = GetCommand();  
                    try  
                    {  
                        //循环  
                        foreach (DictionaryEntry myDE in SQLStringList)  
                        {  
                            string cmdText = myDE.Key.ToString();  
                            IDataParameter[] iParms = (IDataParameter[])myDE.Value;  
                            PrepareCommand(out iCmd, iConn, iTrans, cmdText, iParms);  
                            int val = iCmd.ExecuteNonQuery();  
                            iCmd.Parameters.Clear();  
                        }  
                        iTrans.Commit();  
                    }  
                    catch  
                    {  
                        iTrans.Rollback();  
                        throw;  
                    }  
                    finally  
                    {  
                        iCmd.Dispose();  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行一条计算查询结果语句,返回查询结果(object)。  
        /// </summary>  
        /// <param name="SQLString">计算查询结果语句</param>  
        /// <returns>查询结果(object)</returns>  
        public object GetSingle(string SQLString, params IDataParameter[] iParms)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                IDbCommand iCmd = GetCommand();  
                {  
                    try  
                    {  
                        PrepareCommand(out iCmd, iConn, null, SQLString, iParms);  
                        object obj = iCmd.ExecuteScalar();  
                        iCmd.Parameters.Clear();  
                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))  
                        {  
                            return null;  
                        }  
                        else  
                        {  
                            return obj;  
                        }  
                    }  
                    catch (System.Exception e)  
                    {  
                        throw new Exception(e.Message);  
                    }  
                    finally  
                    {  
                        iCmd.Dispose();  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行查询语句,返回IDataReader  
        /// </summary>  
        /// <param name="strSQL">查询语句</param>  
        /// <returns> IDataReader </returns>  
        public IDataReader ExecuteReader(string SQLString, params IDataParameter[] iParms)  
        {  
            IDbConnection iConn = this.GetConnection();  
            {  
                IDbCommand iCmd = GetCommand();  
                {  
                    try  
                    {  
                        PrepareCommand(out iCmd, iConn, null, SQLString, iParms);  
                        System.Data.IDataReader iReader = iCmd.ExecuteReader();  
                        iCmd.Parameters.Clear();  
                        return iReader;  
                    }  
                    catch (System.Exception e)  
                    {  
                        throw new Exception(e.Message);  
                    }  
                    finally  
                    {  
                        iCmd.Dispose();  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 执行查询语句,返回DataSet  
        /// </summary>  
        /// <param name="SQLString">查询语句</param>  
        /// <returns>DataSet</returns>  
        public DataSet Query(string sqlString, params IDataParameter[] iParms)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                IDbCommand iCmd = GetCommand();  
                {  
                    PrepareCommand(out iCmd, iConn, null, sqlString, iParms);  
                    try  
                    {  
                        IDataAdapter iAdapter = this.GetAdapater(sqlString, iConn);  
                        DataSet ds = new DataSet();  
                        iAdapter.Fill(ds);  
                        iCmd.Parameters.Clear();  
                        return ds;  
                    }  
                    catch (System.Exception ex)  
                    {  
                        throw new Exception(ex.Message);  
                    }  
                    finally  
                    {  
                        iCmd.Dispose();  
                        if (iConn.State != ConnectionState.Closed)  
                        {  
                            iConn.Close();  
                        }  
                    }  
                }  
            }  
        }  
        /// <summary>  
        /// 初始化Command  
        /// </summary>  
        /// <param name="iCmd"></param>  
        /// <param name="iConn"></param>  
        /// <param name="iTrans"></param>  
        /// <param name="cmdText"></param>  
        /// <param name="iParms"></param>  
        private void PrepareCommand(out IDbCommand iCmd, IDbConnection iConn, System.Data.IDbTransaction iTrans, string cmdText, IDataParameter[] iParms)  
        {  
            if (iConn.State != ConnectionState.Open)  
                iConn.Open();  
            iCmd = this.GetCommand();  
            iCmd.Connection = iConn;  
            iCmd.CommandText = cmdText;  
            if (iTrans != null)  
                iCmd.Transaction = iTrans;  
            iCmd.CommandType = CommandType.Text;//cmdType;  
            if (iParms != null)  
            {  
                foreach (IDataParameter parm in iParms)  
                    iCmd.Parameters.Add(parm);  
            }  
        }  
        #endregion  
        #region 存储过程操作  
        /// <summary>  
        /// 执行存储过程  
        /// </summary>  
        /// <param name="storedProcName">存储过程名</param>  
        /// <param name="parameters">存储过程参数</param>  
        /// <returns>SqlDataReader</returns>  
        public SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters)  
        {  
            IDbConnection iConn = this.GetConnection();  
            {  
                iConn.Open();  
  
                using (SqlCommand sqlCmd = BuildQueryCommand(iConn, storedProcName, parameters))  
                {  
                    return sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);  
                }  
            }  
        }  
        /// <summary>  
        /// 执行存储过程  
        /// </summary>  
        /// <param name="storedProcName">存储过程名</param>  
        /// <param name="parameters">存储过程参数</param>  
        /// <param name="tableName">DataSet结果中的表名</param>  
        /// <returns>DataSet</returns>  
        public DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                DataSet dataSet = new DataSet();  
                iConn.Open();  
                IDataAdapter iDA = this.GetAdapater();  
                iDA = this.GetAdapater(BuildQueryCommand(iConn, storedProcName, parameters));  
                ((SqlDataAdapter)iDA).Fill(dataSet, tableName);  
                if (iConn.State != ConnectionState.Closed)  
                {  
                    iConn.Close();  
                }  
                return dataSet;  
            }  
        }  
        /// <summary>  
        /// 执行存储过程  
        /// </summary>  
        /// <param name="storedProcName">存储过程名</param>  
        /// <param name="parameters">存储过程参数</param>  
        /// <param name="tableName">DataSet结果中的表名</param>  
        /// <param name="startIndex">开始记录索引</param>  
        /// <param name="pageSize">页面记录大小</param>  
        /// <returns>DataSet</returns>  
        public DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, int startIndex, int pageSize, string tableName)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                DataSet dataSet = new DataSet();  
                iConn.Open();  
                IDataAdapter iDA = this.GetAdapater();  
                iDA = this.GetAdapater(BuildQueryCommand(iConn, storedProcName, parameters));  
  
                ((SqlDataAdapter)iDA).Fill(dataSet, startIndex, pageSize, tableName);  
                if (iConn.State != ConnectionState.Closed)  
                {  
                    iConn.Close();  
                }  
                return dataSet;  
            }  
        }  
        /// <summary>  
        /// 执行存储过程 填充已经存在的DataSet数据集   
        /// </summary>  
        /// <param name="storeProcName">存储过程名称</param>  
        /// <param name="parameters">存储过程参数</param>  
        /// <param name="dataSet">要填充的数据集</param>  
        /// <param name="tablename">要填充的表名</param>  
        /// <returns></returns>  
        public DataSet RunProcedure(string storeProcName, IDataParameter[] parameters, DataSet dataSet, string tableName)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                iConn.Open();  
                IDataAdapter iDA = this.GetAdapater();  
                iDA = this.GetAdapater(BuildQueryCommand(iConn, storeProcName, parameters));  
  
                ((SqlDataAdapter)iDA).Fill(dataSet, tableName);  
  
                if (iConn.State != ConnectionState.Closed)  
                {  
                    iConn.Close();  
                }  
                return dataSet;  
            }  
        }  
        /// <summary>  
        /// 执行存储过程并返回受影响的行数  
        /// </summary>  
        /// <param name="storedProcName"></param>  
        /// <param name="parameters"></param>  
        /// <returns></returns>  
        public int RunProcedureNoQuery(string storedProcName, IDataParameter[] parameters)  
        {  
            int result = 0;  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                iConn.Open();  
                using (SqlCommand scmd = BuildQueryCommand(iConn, storedProcName, parameters))  
                {  
                    result = scmd.ExecuteNonQuery();  
                }  
  
                if (iConn.State != ConnectionState.Closed)  
                {  
                    iConn.Close();  
                }  
            }  
            return result;  
        }  
        public string RunProcedureExecuteScalar(string storeProcName, IDataParameter[] parameters)  
        {  
            string result = string.Empty;  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                iConn.Open();  
                using (SqlCommand scmd = BuildQueryCommand(iConn, storeProcName, parameters))  
                {  
                    object obj = scmd.ExecuteScalar();  
                    if (obj == null)  
                        result = null;  
                    else  
                        result = obj.ToString();  
                }  
                if (iConn.State != ConnectionState.Closed)  
                {  
                    iConn.Close();  
                }  
            }  
            return result;  
        }  
        /// <summary>  
        /// 构建 SqlCommand 对象(用来返回一个结果集,而不是一个整数值)  
        /// </summary>  
        /// <param name="connection">数据库连接</param>  
        /// <param name="storedProcName">存储过程名</param>  
        /// <param name="parameters">存储过程参数</param>  
        /// <returns>SqlCommand</returns>  
        private SqlCommand BuildQueryCommand(IDbConnection iConn, string storedProcName, IDataParameter[] parameters)  
        {  
            IDbCommand iCmd = GetCommand(storedProcName, iConn);  
            iCmd.CommandType = CommandType.StoredProcedure;  
            if (parameters == null)  
            {  
                return (SqlCommand)iCmd;  
            }  
            foreach (IDataParameter parameter in parameters)  
            {  
                iCmd.Parameters.Add(parameter);  
            }  
            return (SqlCommand)iCmd;  
        }  
        /// <summary>  
        /// 执行存储过程,返回影响的行数          
        /// </summary>  
        /// <param name="storedProcName">存储过程名</param>  
        /// <param name="parameters">存储过程参数</param>  
        /// <param name="rowsAffected">影响的行数</param>  
        /// <returns></returns>  
        public int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected)  
        {  
            using (IDbConnection iConn = this.GetConnection())  
            {  
                int result;  
                iConn.Open();  
                using (SqlCommand sqlCmd = BuildIntCommand(iConn, storedProcName, parameters))  
                {  
                    rowsAffected = sqlCmd.ExecuteNonQuery();  
                    result = (int)sqlCmd.Parameters["ReturnValue"].Value;  
                    if (iConn.State != ConnectionState.Closed)  
                    {  
                        iConn.Close();  
                    }  
                    return result;  
                }  
            }  
        }  
        /// <summary>  
        /// 创建 SqlCommand 对象实例(用来返回一个整数值)      
        /// </summary>  
        /// <param name="storedProcName">存储过程名</param>  
        /// <param name="parameters">存储过程参数</param>  
        /// <returns>SqlCommand 对象实例</returns>  
        private SqlCommand BuildIntCommand(IDbConnection iConn, string storedProcName, IDataParameter[] parameters)  
        {  
            SqlCommand sqlCmd = BuildQueryCommand(iConn, storedProcName, parameters);  
            sqlCmd.Parameters.Add(new SqlParameter("ReturnValue",  
                SqlDbType.Int, 4, ParameterDirection.ReturnValue,  
                false, 0, 0, string.Empty, DataRowVersion.Default, null));  
            return sqlCmd;  
        }  
        #endregion  
    }  
}
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
小注:
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
这个类封装成dll后,相关数据库连接可在,引用该dll项目的app.config文件中写,如果是web程序,这需要修改代码,将构造函数中获取app.config的信息换成获取web.config的信息。
C#使用vs2010封装DLL
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制
登录后复制

 以上就是C#.NET万能数据库访问封装类(ACCESS、SQLServer、Oracle) 的内容,更多相关内容请关注PHP中文网(www.php.cn)!

    智能AI问答
    PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
    来源:php中文网
    本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
    最新问题
    关于CSS思维导图的课件在哪? 课件
    凡人来自于2024-04-16 10:10:18
    热门推荐
    热门教程
    更多>
    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
    php中文网:公益在线php培训,帮助PHP学习者快速成长!
    关注服务号 技术交流群
    PHP中文网订阅号
    每天精选资源文章推送
    PHP中文网APP
    随时随地碎片化学习
    PHP中文网抖音号
    发现有趣的

    Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号