• 几个C#数据库封装类


         由于SqlDataReader需要一个长效连接的原因,把它从CMySqlConnection中独立了出来,感觉有些松散,另外也有点重复封装的味道,不过实际使用中方便了许多,不用经常打开关闭数据库,省了不少。

        class CMySqlConnection                              //SqlConnection封装类
        {
            
    private SqlConnection m_objConn;

            
    //基于连接字符串构建对象
            public CMySqlConnection(string strConnString)
            {
                m_objConn 
    = new SqlConnection(strConnString);
            }

            
    //打开数据库连接
            private void Open()
            {
                Close();
                m_objConn.Open();
            }

            
    //关闭数据库连接
            private void Close()
            {
                
    if(m_objConn.State == ConnectionState.Open)
                    m_objConn.Close();
            }

            
    //执行Sql语句(不返回记录集的)
            private int ExecSql(string strSql)
            {
                
    int nRet = 0;

                
    try
                {
                    
    this.Open();
                    SqlCommand objSqlCommand 
    = new SqlCommand(strSql, m_objConn);
                    nRet 
    = objSqlCommand.ExecuteNonQuery();
                    
    this.Close();
                }
                
    catch (Exception objException)
                {
                    MessageBox.Show(
    "执行SQL语句时出错,出错信息为:" + objException.ToString(), "错误");
                }

                
    return nRet;            //返回SQL语句执行后所影响的行数
            }

            
    //执行一个查询操作
            public DataSet doSelect(string strSql,string strTableName)
            {
                DataSet objDataSet 
    = null;
                SqlDataAdapter objDataAdapter 
    = null;

                
    try
                {
                    
    this.Open();
                    objDataSet 
    = new DataSet();
                    objDataAdapter 
    = new SqlDataAdapter(strSql, m_objConn);
                    objDataAdapter.Fill(objDataSet, strTableName);
                    
    this.Close();
                }
                
    catch (Exception objException)
                {
                    MessageBox.Show(
    "执行SQL语句时出错,出错信息为:" + objException.ToString(), "错误");
                }

                
    return objDataSet;
            }

            
    //执行一个插入操作
            public int doInsert(string strSql)
            {
                
    return ExecSql(strSql);
            }

            
    //执行一个更新操作
            public int doUpdate(string strSql)
            {
                
    return ExecSql(strSql);
            }

            
    //执行一个删除操作
            public int doDelete(string strSql)
            {
                
    return ExecSql(strSql);
            }
        }
        class CMySqlDataReader                              //SqlDataReader封装类
        {
            
    private bool m_bIsSelfConn;                     //是否新建数据库连接标志
            private SqlConnection m_objConn;                //数据库连接对象
            private SqlDataReader m_objSqlDataReader;       //阅读器对象
            
            
    //新建一个数据库连接构建对象
            public CMySqlDataReader(string strConnString)
            {
                m_objConn 
    = new SqlConnection(strConnString);

                
    try
                {
                    m_objConn.Open();
                    m_bIsSelfConn 
    = true;
                }
                
    catch (Exception objException)
                {
                    MessageBox.Show(
    "打开数据库连接时出错,出错信息为:" + objException.ToString(), "错误");
                }
            }

            
    //基于一个现存的数据库连接对象(必须已打开)构建对象
            public CMySqlDataReader(SqlConnection objConn)
            {
                
    if (objConn.State == ConnectionState.Open)
                {
                    m_objConn 
    = objConn;
                    m_bIsSelfConn 
    = false;
                }
                
    else
                {
                    
    throw new Exception("数据库连接未打开!");      //如果连接未打开则抛出异常
                }
            }

            
    //打开并获得一个阅读器
            public SqlDataReader Open(string strSql)
            {
                SqlCommand objSqlCommand 
    = null;
                m_objSqlDataReader 
    = null;

                
    try
                {
                    objSqlCommand 
    = new SqlCommand(strSql, m_objConn);
                    m_objSqlDataReader 
    = objSqlCommand.ExecuteReader();
                }
                
    catch (Exception objException)
                {
                    MessageBox.Show(
    "创建一个SqlDataReader时出错,出错信息为:" + objException.ToString(), "错误");
                }

                
    return m_objSqlDataReader;
            }

            
    //关闭一个阅读器
            public void Close()
            {
                m_objSqlDataReader.Close();
                
    if (m_bIsSelfConn)              //如果数据库连接为新建的,则关闭它
                {
                    
    if (m_objConn.State == ConnectionState.Open)
                        m_objConn.Close();
                }
            }
        }
  • 相关阅读:
    如何开始DDD(续)
    如何开始DDD
    ThinkNet终于见面了
    [Umbraco] umbraco中如何分页
    ETL 工具下载全集 包括 Informatica Datastage Cognos( 持续更新)
    js时间对比-转化为几天前,几小时前,几分钟前
    原生JS实现返回顶部和滚动锚点
    JSONP原理及简单实现 可做简单插件使用
    CSS3 transition效果 360度旋转 旋转放大 放大 移动
    js获取url的常用方法
  • 原文地址:https://www.cnblogs.com/ZYM/p/1414631.html
Copyright © 2020-2023  润新知