c# 数据库操纵封装

这个博客介绍了如何编写一个C#数据库操作类,用于方便地连接和操作不同类型的数据库,包括SqlClient、OleDb和Odbc。类库包含了连接字符串的设置、数据库连接的打开和关闭,以及数据适配器的获取等功能。
摘要由CSDN通过智能技术生成

    为了方便操纵数据库,编写了一个数据库类。经过多次修改,变成以下样子:

 using System;
using System.Data;
using System.Data.Odbc;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Data.Common;

using System.IO;
namespace com.hnrui.db2005
{
    /// <summary>
    /// HrDB: 数据库操纵
    /// </summary>
    public class HrDB
    {
        private static DateTime sqlMinDateTime = DateTime.MinValue;
        private static DateTime sqlMaxDateTime = DateTime.MinValue;
        public static DateTime SqlMinDateTime
        {
            get
            {
                if (sqlMinDateTime == DateTime.MinValue)
                    sqlMinDateTime = new DateTime(1753, 1, 1);
                return sqlMinDateTime;
            }
        }
        public static DateTime SqlMaxDateTime
        {
            get
            {
                if (sqlMaxDateTime == DateTime.MinValue)
                    sqlMaxDateTime = new DateTime(9999, 12, 31);
                return sqlMaxDateTime;
            }
        }

        private string dbConString = null;
        private DataProviderType m_DataProviderType = DataProviderType.SQLCLIENT;

        private string mErrors= "";
        public string Errors
        {
            get
            {
                string res = mErrors;
                mErrors = "";   //错误信息提取后自动清除
                return res;
            }
        }
       
        public bool HasErrors
        {
            get { return mErrors != ""; }
        }

        #region 构造函数
        /// <summary>
        /// 使用 SqlClient 设置缺省连接
        /// </summary>
        /// <param name="serverName">服务器</param>
        /// <param name="dataBaseName">数据库</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        public HrDB(
            string serverName,
            string dataBaseName,
            string userName,
            string password)
        {
            m_DataProviderType = DataProviderType.SQLCLIENT;
            dbConString =
                "Initial Catalog=" + dataBaseName + ";"
                + "Data Source=" + serverName + ";"
                + "User ID=" + userName + ";"
                + "Password=" + password + ";"
                + "Application Name=HengRui" + ";"
                + "Connection Timeout=60";
        }

        /// <summary>
        /// 使用 SqlClient 设置缺省连接
        /// </summary>
        /// <param name="serverName">服务器</param>
        /// <param name="dataBaseName">数据库</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        /// <param name="appname">应用程序名</param>
        public HrDB(
            string serverName,
            string dataBaseName,
            string userName,
            string password,
            string appName)
        {
            m_DataProviderType = DataProviderType.SQLCLIENT;
            dbConString =
                "Initial Catalog=" + dataBaseName + ";"
                + "Data Source=" + serverName + ";"
                + "User ID=" + userName + ";"
                + "Password=" + password + ";"
                + "Application Name=" + appName +";"
                + "Connection Timeout=60";

        }
        /// <summary>
        /// 使用dataProviderType和连接字符串创建缺省连接
        /// </summary>
        /// <param name="dataProviderType">数据库类型:SqlClient,Oledb,Odbc,Oracle</param>
        /// <param name="connectionString">连接字符串</param>
        public HrDB(DataProviderType dataProviderType, String connectionString)
        {
            m_DataProviderType = dataProviderType;
            dbConString = connectionString;
        }

        public HrDB(string dataProvider, string connectionString)
        {
            DataProviderType dp = DataProviderType.SQLCLIENT;
            switch (dataProvider.ToUpper())
            {
                case "OLEDB":
                    dp = DataProviderType.OLEDB;
                    break;
                case "ODBC":
                    dp = DataProviderType.ODBC;
                    break;
                case "ORACLE":
                    dp = DataProviderType.ORACLE;
                    break;
                default:
                    dp = DataProviderType.SQLCLIENT;
                    break;
            }
            m_DataProviderType = dp;
            dbConString = connectionString;
        }

        #endregion

        public bool IsConnectOk
        {
            get
            {
                DbConnection dbcon = OpenConnection();
                if (dbcon == null)
                    return false;

                ColseConnection(dbcon);
                return true;
            }
        }

        public DbConnection OpenConnection()
        {
            DbConnection dbCon = OpenConnection(m_DataProviderType, dbConString);

            if (dbCon != null)
                if (dbCon.State == ConnectionState.Closed)
                    dbCon.Open();

            return dbCon;
        }
       
         /// <summary>
        /// 连接数据库并保持打开
        /// </summary>
        /// <param name="dataProviderType">数据库类型:SqlClient,Oledb,Odbc,Oracle</param>
        /// <param name="connectionString">连接字符串</param>
        private DbConnection OpenConnection(DataProviderType dataProviderType, String connectionString)
        {
            DbConnection con = null;
            try
            {
                switch (dataProviderType)
                {
                    case DataProviderType.SQLCLIENT:
                        System.Data.SqlClient.SqlConnection sqlCon = new SqlConnection(connectionString);
                        con = sqlCon;
                        break;
                    case DataProviderType.OLEDB:
                        System.Data.OleDb.OleDbConnection oleCon = new OleDbConnection(connectionString);
                        con = oleCon;
                        break;
                    case DataProviderType.ODBC:
                        System.Data.Odbc.OdbcConnection odbcCon = new OdbcConnection(connectionString);
                        con = odbcCon;
                        break;
                    default:
                        con = null;
                        break;
                }

                if (con != null)
                {
     

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值