自己写的数据库链接类,请高手指点一下。

本文介绍了一个使用OleDb进行数据库连接及操作的C#类,包括执行SQL语句、获取数据表和数据集等功能,并提供了异常处理和资源释放的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using System;

using System.Collections.Generic;

using System.Text;

using System.Data;

using System.Data.OleDb;



namespace DatabaseConn

{

    public class Connection

    {

        private string connection_string;

        /// <summary>

        /// 数据库链接字符串

        /// </summary>

        public string ConnectionString

        {

            get

            {

                return connection_string;

            }

            set

            {

                connection_string = value;

            }

        }

        private OleDbConnection connection;

        /// <summary>

        /// 数据库链接

        /// </summary>

        public OleDbConnection Conn

        {

            get

            {

                return connection;

            }

            set

            {

                connection = value;

            }

        }

        private OleDbCommand command;

        /// <summary>

        /// 数据库命令执行者

        /// </summary>

        public OleDbCommand Command

        {

            get

            {

                return command;

            }

            set

            {

                command = value;

            }

        }

        private OleDbDataAdapter dateadapter;

        private OleDbDataReader datereader;

        /// <summary>

        /// 数据库读取器

        /// </summary>

        public OleDbDataReader DateReader

        {

            get

            {

                return datereader;

            }

            set

            {

                datereader = value;

            }

        }

        private string sql;

        /// <summary>

        /// 执行SQL

        /// </summary>

        public string SQL

        {

            get

            {

                return sql;

            }

            set

            {

                sql = value;

            }

        }

        private string error_info;

        /// <summary>

        /// 错误信息

        /// </summary>

        public string ErrorInfo

        {

            get

            {

                return error_info;

            }

            set

            {

                error_info = value;

            }

        }



        /// <summary>

        /// 初始化链接

        /// </summary>

        public Connection()

        {

            connection = new OleDbConnection();

            command = new OleDbCommand();

            command.Connection = connection;

            error_info = "";

            sql = "";

            connection_string = "";

        }



        /// <summary>

        /// 初始化链接

        /// </summary>

        /// <param name="ConnectionString">数据库链接字符串</param>

        public Connection(string ConnectionString)

        {

            connection = new OleDbConnection(ConnectionString);

            command = new OleDbCommand();

            command.Connection = connection;

            error_info = "";

            sql = "";

            connection_string = ConnectionString;

        }



        /// <summary>

        /// 取得DataTable

        /// </summary>

        /// <returns>返回DataTable</returns>

        public DataTable GetDataTable()

        {

            DataTable temp = new DataTable();

            try

            {

                if (connection.State == ConnectionState.Closed)

                {

                    connection.Open();

                }

                command.CommandType = CommandType.Text;

                command.CommandText = sql;

                dateadapter = new OleDbDataAdapter();

                dateadapter.SelectCommand = command;

                dateadapter.Fill(temp);

                //清理OleDbCommand.Parameters变量。

                if (command.Parameters.Count > 0)

                {

                    command.Parameters.Clear();

                }

            }

            catch (Exception e)

            {

                Dispose();

                error_info = e.Message;

                throw e;

            }

            return temp;

        }



        /// <summary>

        /// 取得DataSet

        /// </summary>

        /// <returns>返回DataSet</returns>

        public DataSet GetDataSet()

        {

            DataSet temp = new DataSet();

            try

            {

                if (connection.State == ConnectionState.Closed)

                {

                    connection.Open();

                }

                command.CommandType = CommandType.Text;

                command.CommandText = sql;

                dateadapter = new OleDbDataAdapter();

                dateadapter.SelectCommand = command;

                dateadapter.Fill(temp);

                //清理OleDbCommand.Parameters变量。

                if (command.Parameters.Count > 0)

                {

                    command.Parameters.Clear();

                }

            }

            catch (Exception e)

            {

                Dispose();

                error_info = e.Message;

                throw e;

            }

            return temp;

        }



        /// <summary>

        /// 执行SQL命令

        /// </summary>

        /// <returns>返回影响行数</returns>

        public int ExecuteSQL()

        {

            int temp = 0;

            try

            {

                if (connection.State == ConnectionState.Closed)

                {

                    connection.Open();

                }

                command.CommandType = CommandType.Text;

                command.CommandText = sql;

                command.Connection = connection;

                temp = command.ExecuteNonQuery();

                //清理OleDbCommand.Parameters变量。

                if (command.Parameters.Count > 0)

                {

                    command.Parameters.Clear();

                }

            }

            catch (Exception e)

            {

                Dispose();

                error_info = e.Message;

                throw e;

            }

            return temp;

        }



        /// <summary>

        /// 取得第一列第一行

        /// </summary>

        /// <returns>返回第一列第一行</returns>

        public object ExecuteScalar()

        {

            object temp = null;

            try

            {

                if (connection.State == ConnectionState.Closed)

                {

                    connection.Open();

                }

                command.CommandType = CommandType.Text;

                command.CommandText = sql;

                command.Connection = connection;

                temp = command.ExecuteScalar();

                //清理OleDbCommand.Parameters变量。

                if (command.Parameters.Count > 0)

                {

                    command.Parameters.Clear();

                }

            }

            catch (Exception e)

            {

                Dispose();

                error_info = e.Message;

                throw e;

            }

            return temp;

        }



        /// <summary>

        /// 取得读取器

        /// </summary>

        /// <returns>返回读取器</returns>

        public object GetDataReader()

        {

            object temp = null;

            try

            {

                if (connection.State == ConnectionState.Closed)

                {

                    connection.Open();

                }

                command.CommandType = CommandType.Text;

                command.CommandText = sql;

                command.Connection = connection;

                temp = command.ExecuteReader();

                //清理OleDbCommand.Parameters变量。

                if (command.Parameters.Count > 0)

                {

                    command.Parameters.Clear();

                }

            }

            catch (Exception e)

            {

                Dispose();

                error_info = e.Message;

                throw e;

            }

            return temp;

        }



        /// <summary>

        /// 关闭释放所有资源链接

        /// </summary>

        public void Dispose()

        {

            if (dateadapter != null)

            {

                dateadapter.Dispose();

            }

            if (datereader != null)

            {

                if (datereader.IsClosed == true)

                {

                    datereader.Close();

                }

                datereader.Dispose();

            }

            if (connection != null)

            {

                if (connection.State != ConnectionState.Closed)

                {

                    connection.Close();

                }

                connection.Dispose();

            }

            if (command != null)

            {

                command.Dispose();

            }

        }

    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值