×

一个基于ASP.NET(C#)的ACCESS数据库操作类

匿名 匿名 发表于2019-10-18 10:45:16 浏览131 评论0

抢沙发发表评论

using System;

using System.Collections;

using System.Collections.Specialized;

using System.Data;

using System.Data.OleDb;

namespace Maticsoft.DBUtility

{

    /// <summary>

    /// 数据访问基础类(基于OleDb)

    /// 可以用户可以修改满足自己项目的需要。

    /// </summary>

    public class DbHelperOleDb

    {

        //数据库连接字符串(web.config来配置),可以动态更改connectionString支持多数据库.

        public string con\= "";

        

        public DbHelperOleDb(string conn)

        {

            this.con\= conn;

        }

        

        #region 公用方法

        public bool Exists(string strSql, params OleDbParameter[] cmdParms)

        {

            object obj = GetSingle(strSql, cmdParms);

            int cmdresult;

            

            if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

            {

                cmdresult = 0;

            }

            else

            {

                cmdresult = int.Parse(obj.ToString());

            }

            

            if (cmdresult == 0)

            {

                return false;

            }

            else

            {

                return true;

            }

        }

        #endregion

        

        #region 执行简单SQL语句

        /// <summary>

        /// 执行SQL语句,返回影响的记录数

        /// </summary>

        /// <param name="SQLString">SQL语句</param>

        /// <returns>影响的记录数</returns>

        public int ExecuteSql(string SQLString)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))

                {

                    try

                    {

                        connection.Open();

                        int rows = cmd.ExecuteNonQuery();

                        return rows;

                    }

                    catch (System.Data.OleDb.OleDbException E)

                    {

                        connection.Close();

                        throw new Exception(E.Message);

                    }

                }

            }

        }


        /// <summary>

        /// 执行多条SQL语句,实现数据库事务。

        /// </summary>

        /// <param name="SQLStringList">多条SQL语句</param>

        public void ExecuteSqlTran(ArrayList SQLStringList)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                conn.Open();

                OleDbCommand cmd = new OleDbCommand();

                cmd.Con\= conn;

                OleDbTransaction tx = conn.BeginTransaction();

                cmd.Transaction = tx;

                try

                {

                    for (int n = 0; n < SQLStringList.Count; n++)

                    {

                        string strsql = SQLStringList[n].ToString();

                        if (strsql.Trim().Length > 1)

                        {

                            cmd.CommandText = strsql;

                            cmd.ExecuteNonQuery();

                        }

                    }

                    tx.Commit();

                }

                catch (System.Data.OleDb.OleDbException E)

                {

                    tx.Rollback();

                    throw new Exception(E.Message);

                }

            }

        }


        /// <summary>

        /// 执行带一个存储过程参数的的SQL语句。

        /// </summary>

        /// <param name="SQLString">SQL语句</param>

        /// <param name="content">参数内容,比如一个字段是格式复杂的文章,有特殊符号,可以通过这个方式添加</param>

        /// <returns>影响的记录数</returns>

        public int ExecuteSql(string SQLString, string content)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                OleDbCommand cmd = new OleDbCommand(SQLString, connection);

                System.Data.OleDb.OleDbParameter myParameter = new System.Data.OleDb.OleDbParameter("@content", OleDbType.VarChar);

                myParameter.Value = content;

                cmd.Parameters.Add(myParameter);

                try

                {

                    connection.Open();

                    int rows = cmd.ExecuteNonQuery();

                    return rows;

                }

                catch (System.Data.OleDb.OleDbException E)

                {

                    throw new Exception(E.Message);

                }

                finally

                {

                    cmd.Dispose();

                    connection.Close();

                }

            }

        }


        /// <summary>

        /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)

        /// </summary>

        /// <param name="strSQL">SQL语句</param>

        /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>

        /// <returns>影响的记录数</returns>

        public int ExecuteSqlInsertImg(string strSQL, byte[] fs)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                OleDbCommand cmd = new OleDbCommand(strSQL, connection);

                System.Data.OleDb.OleDbParameter myParameter = new System.Data.OleDb.OleDbParameter("@fs", OleDbType.Binary);

                myParameter.Value = fs;

                cmd.Parameters.Add(myParameter);

                try

                {

                    connection.Open();

                    int rows = cmd.ExecuteNonQuery();

                    return rows;

                }

                catch (System.Data.OleDb.OleDbException E)

                {

                    throw new Exception(E.Message);

                }

                finally

                {

                    cmd.Dispose();

                    connection.Close();

                }

            }

        }


        /// <summary>

        /// 执行一条计算查询结果语句,返回查询结果(object)。

        /// </summary>

        /// <param name="SQLString">计算查询结果语句</param>

        /// <returns>查询结果(object)</returns>

        public object GetSingle(string SQLString)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))

                {

                    try

                    {

                        connection.Open();

                        object obj = cmd.ExecuteScalar();

                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

                        {

                            return null;

                        }

                        else

                        {

                            return obj;

                        }

                    }

                    catch (System.Data.OleDb.OleDbException e)

                    {

                        connection.Close();

                        throw new Exception(e.Message);

                    }

                }

            }

        }


        /// <summary>

        /// 执行查询语句,返回OleDbDataReader

        /// </summary>

        /// <param name="strSQL">查询语句</param>

        /// <returns>OleDbDataReader</returns>

        public OleDbDataReader ExecuteReader(string strSQL)

        {

            OleDbConnection con\= new OleDbConnection(connectionString);

            OleDbCommand cmd = new OleDbCommand(strSQL, connection);

            try

            {

                connection.Open();

                OleDbDataReader myReader = cmd.ExecuteReader();

                return myReader;

            }

            catch (System.Data.OleDb.OleDbException e)

            {

                throw new Exception(e.Message);

            }

        }


        /// <summary>

        /// 执行查询语句,返回DataSet

        /// </summary>

        /// <param name="SQLString">查询语句</param>

        /// <returns>DataSet</returns>

        public DataSet Query(string SQLString)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                DataSet ds = new DataSet();

                try

                {

                    connection.Open();

                    OleDbDataAdapter command = new OleDbDataAdapter(SQLString, connection);

                    command.Fill(ds, "ds");

                }

                catch (System.Data.OleDb.OleDbException ex)

                {

                    throw new Exception(ex.Message);

                }

                return ds;

            }

        }

        #endregion


        #region 执行带参数的SQL语句

        /// <summary>

        /// 执行SQL语句,返回影响的记录数

        /// </summary>

        /// <param name="SQLString">SQL语句</param>

        /// <returns>影响的记录数</returns>

        public int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                using (OleDbCommand cmd = new OleDbCommand())

                {

                    try

                    {

                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);

                        int rows = cmd.ExecuteNonQuery();

                        cmd.Parameters.Clear();

                        return rows;

                    }

                    catch (System.Data.OleDb.OleDbException E)

                    {

                        throw new Exception(E.Message);

                    }

                }

            }

        }


        /// <summary>

        /// 执行多条SQL语句,实现数据库事务。

        /// </summary>

        /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的OleDbParameter[])</param>

        public void ExecuteSqlTran(Hashtable SQLStringList)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                conn.Open();

                using (OleDbTransaction trans = conn.BeginTransaction())

                {

                    OleDbCommand cmd = new OleDbCommand();

                    try

                    {

                        //循环

                        foreach (DictionaryEntry myDE in SQLStringList)

                        {

                            string cmdText = myDE.Key.ToString();

                            OleDbParameter[] cmdParms = (OleDbParameter[])myDE.Value;

                            PrepareCommand(cmd, conn, trans, cmdText, cmdParms);

                            int val = cmd.ExecuteNonQuery();

                            cmd.Parameters.Clear();

                        }

                        trans.Commit();

                    }

                    catch

                    {

                        trans.Rollback();

                        throw;

                    }

                }

            }

        }


        /// <summary>

        /// 执行一条计算查询结果语句,返回查询结果(object)。

        /// </summary>

        /// <param name="SQLString">计算查询结果语句</param>

        /// <returns>查询结果(object)</returns>

        public object GetSingle(string SQLString, params OleDbParameter[] cmdParms)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                using (OleDbCommand cmd = new OleDbCommand())

                {

                    try

                    {

                        PrepareCommand(cmd, connection, null, SQLString, cmdParms);

                        object obj = cmd.ExecuteScalar();

                        cmd.Parameters.Clear();

                        if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))

                        {

                            return null;

                        }

                        else

                        {

                            return obj;

                        }

                    }

                    catch (System.Data.OleDb.OleDbException e)

                    {

                        throw new Exception(e.Message);

                    }

                }

            }

        }


        /// <summary>

        /// 执行查询语句,返回OleDbDataReader

        /// </summary>

        /// <param name="strSQL">查询语句</param>

        /// <returns>OleDbDataReader</returns>

        public OleDbDataReader ExecuteReader(string SQLString, params OleDbParameter[] cmdParms)

        {

            OleDbConnection con\= new OleDbConnection(connectionString);

            OleDbCommand cmd = new OleDbCommand();

            try

            {

                PrepareCommand(cmd, connection, null, SQLString, cmdParms);

                OleDbDataReader myReader = cmd.ExecuteReader();

                cmd.Parameters.Clear();

                return myReader;

            }

            catch (System.Data.OleDb.OleDbException e)

            {

                throw new Exception(e.Message);

            }

        }


        /// <summary>

        /// 执行查询语句,返回DataSet

        /// </summary>

        /// <param name="SQLString">查询语句</param>

        /// <returns>DataSet</returns>

        public DataSet Query(string SQLString, params OleDbParameter[] cmdParms)

        {

            using (OleDbConnection con\= new OleDbConnection(connectionString))

            {

                OleDbCommand cmd = new OleDbCommand();

                PrepareCommand(cmd, connection, null, SQLString, cmdParms);

                using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))

                {

                    DataSet ds = new DataSet();

                    try

                    {

                        da.Fill(ds, "ds");

                        cmd.Parameters.Clear();

                    }

                    catch (System.Data.OleDb.OleDbException ex)

                    {

                        throw new Exception(ex.Message);

                    }

                    return ds;

                }

            }

        }


        private void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms)

        {

            if (conn.State != ConnectionState.Open)

                conn.Open();

            cmd.Con\= conn;

            cmd.CommandText = cmdText;

            if (trans != null)

                cmd.Transaction = trans;

            cmd.CommandType = CommandType.Text;//cmdType;

            if (cmdParms != null)

            {

                foreach (OleDbParameter parm in cmdParms)

                    cmd.Parameters.Add(parm);

            }

        }

        #endregion

    }

}



使用实例:

string con\= "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\#gklq.mdb;PersistSecurity Info=False";

DbHelperOleDb op = newDbHelperOleDb(connStr); // 初始化实例,需要传入一个连接字符串


/****************************** 执行 一条简单sql语句 ***************************************/

op.ExecuteSql(" insert into art( kh,xm,xb,chj,zhy,shyd ) values('11111', '站战争','男' ,333 ,'计算机','山东' ) ");


/******************************执行事务 ***************************************/

string str1 = "insert into art( kh,xm,xb,chj,zhy,shyd )values( '2222222', '张思','男' ,333 ,'计算机','山东' )";

string str2 = "insert into art( kh,xm,xb,chj,zhy,shyd )values( '3333333', '张思','男' ,333 ,'计算机','山东' )";

ArrayList sqls = newArrayList();

sqls.Add(str1);

sqls.Add(str2);

op.ExecuteSqlTran(sqls);


/****************************** 执行一条 带参数的sql语句 ***************************************/

string str = "insert into art( kh,xm,xb,chj,zhy,shyd )values( @kh,@xm,@xb,@chj,@zhy,@shyd )";

OleDbParameter[] paras = {

    newOleDbParameter("@kh", OleDbType.VarChar, 50),

    new OleDbParameter("@xm", OleDbType.VarChar, 50),

    newOleDbParameter("@xb", OleDbType.VarChar, 50),

};

paras[0].Value = "730913";

paras[1].Value = "里斯";

paras[2].Value = "女";

int rows = op.ExecuteSql(str, paras);




群贤毕至

访客