以前写的一个访问SQLServer的数据库基础类

/******************************************************************************
* COPYRIGHT NJAU LIMITED 2006
* File name     : DatabaseAccess.cs
* Summary       : Access the SQLServer class.
* Author        : Cheng chong<mailvincent@163.com>
* History       : 2004/09/12 - Version 1.0 First version.
******************************************************************************/
using System;
using System.Data;
using System.Data.SqlClient;
namespace MyDataBase
{
    /// <summary>
    /// MyDatabase 是数据库的基础类
    /// </summary>
    public class DatabaseAccess
    {

        #region 构造函数

        /// <summary>
        /// 缺省的构造函数
        /// </summary>
        public DatabaseAccess()
        {
            this.DbStr = "OA";
            this.strAccessConn = "";
            this.ISOnlyStrDB = true;
            this.myConnection = null;
            this.myCommand = null;
            this.myDataReader = null;
            this.ISOnlyStrDB = true;
        }

        /// <summary>
        /// 可以设置直接访问的联机字符串的构造函数
        /// </summary>
        /// <param name="ConnStr">联机字符串</param>
        public DatabaseAccess(string ConnStr)
        {
            this.DbStr = "OA";
            this.strAccessConn = "";
            this.ISOnlyStrDB = true;
            this.myConnection = null;
            this.myCommand = null;
            this.myDataReader = null;
            if ((ConnStr != null) && (ConnStr.Trim() != ""))
            {
                this.strAccessConn = ConnStr;
                this.ISOnlyStrDB = false;
            }
        }
        
        #endregion

        #region 定义变量

        private string DbStr="openAccess";

        //定义连接的字符串
        private string strAccessConn="";
        private bool ISOnlyStrDB=true;

        //声明连接对象
        public SqlConnection myConnection=null ;
        public SqlCommand myCommand=null;
        public SqlDataReader myDataReader=null ;

        #endregion

        #region 定义属性

        /// <summary>
        /// 定义连接字符串属性
        /// </summary>
        public string StrAccessConn
        {
            get
            {
                return strAccessConn;
            }
            set
            {
                if(value!=null&&value.Trim()!="")
                {
                    strAccessConn=value;
                    ISOnlyStrDB=false;
                }
            }
        }

        /// <summary>
        /// 定义数据库名字符串属性
        /// </summary>
        public string StrDB
        {
            get
            {
                return DbStr;
            }
            set
            {
                if(value!=null&&value.Trim()!="")
                {
                    DbStr=value;
                    ISOnlyStrDB=true;
                }
            }
        }

        #endregion

        /// <summary>
        /// 数据库初始化
        /// </summary>
        /// <returns></returns>
        public bool InitDB()
        {
            try
            {
                //首先试图访问数据库连接配置文件
                if (this.ISOnlyStrDB)
                {
                    this.strAccessConn =
                        file_access.ReadConn(Environment.CurrentDirectory + @"\DbConn.ini");
                }
                this.myConnection = new SqlConnection(this.strAccessConn);
                if (this.myConnection.State == ConnectionState.Open)
                {
                    this.myConnection.Close();
                }
                if (this.myConnection.State == ConnectionState.Closed)
                {
                    this.myConnection.Open();
                }
                else
                {
                    return false;
                }
            }
            catch (SqlException)
            {
                return false;
            }
            catch (Exception)
            {
                return false;
            }
            return true;
        }

        /// <summary>
        /// 关闭数据库
        /// </summary>
        /// <returns bool>执行正确,返回true;否则返回false </returns>
        public bool CloseDB()
        {
            try
            {   
                if(myConnection.State==ConnectionState.Open)
                {
                    //关闭现有的连接
                    myConnection.Close();
                }   
            }
            catch(SqlException)
            {
                return false ;
            }
            return true;
        }

        /// <summary>
        /// 执行SQL的查询语句
        /// </summary>
        /// <param name="strSQL">SQL查询语句字符串</param>
        /// <returns bool>执行正确,返回true;否则返回false </returns>
        public bool ExecuteQuery(string strSQL )
        {
            try
            {
                if(strSQL==null||strSQL.Trim()=="")
                    return false ;
                //判断是否需要对数据库进行初始化
                if(myConnection.State==ConnectionState.Closed)
                {
                    if(! InitDB()) return false ;//初始化失败
                 
                }
                if(myDataReader!=null)
                {
                    if(! myDataReader.IsClosed)
                        myDataReader.Close();
                }//关闭数据读取器
                myCommand =new SqlCommand(strSQL);
                myCommand.Connection=myConnection;
                myDataReader=myCommand.ExecuteReader();
               
            }
            catch(SqlException)
            {
                if(! myDataReader.IsClosed) myDataReader.Close();//发生异常时,关闭数据读取器
                InitDB();//重新初始化数据库连接,需要考证
                return false ;
            }
            return true;
           
        }
   

        /// <summary>
        /// 执行SQL的查询语句重载版本
        /// </summary>
        /// <param name="strSQL">SQL查询语句字符串</param>
        /// <param name="strCmdBehavior">提供对查询结果和查询对数据库的影响的说明</param>
        /// strCmdBehavior:SingleRow|SingleResult|SequentialAccess
        /// <returns bool>执行正确,返回true;否则返回false </returns>
        public bool ExecuteQuery(string strSQL , string strCmdBehavior)
        {
           
            try
            {
                if(strSQL==null||strSQL.Trim()=="")
                    return false ;
                //判断是否需要对数据库进行初始化
                    if(myConnection.State==ConnectionState.Closed)
                    {
                        if(! InitDB()) return false ;//初始化失败
                 
                    }
                myCommand =new SqlCommand(strSQL);
                myCommand.Connection=myConnection;
                if(myDataReader!=null)
                {
                    if(! myDataReader.IsClosed)
                        myDataReader.Close();
                }//关闭数据读取器

                //提供对查询结果和查询对数据库的影响的说明
                if(strCmdBehavior==null||strCmdBehavior.Trim()=="")
                {
                    myDataReader=myCommand.ExecuteReader(CommandBehavior.Default);
                }
                else if(strCmdBehavior.Trim()=="SingleRow")//查询应返回一行
                {
                    myDataReader=myCommand.ExecuteReader(CommandBehavior.SingleRow);
                }
                else if(strCmdBehavior.Trim()=="SingleResult")//查询返回一个结果集
                {
                    myDataReader=myCommand.ExecuteReader(CommandBehavior.SingleResult);
                }
                    //提供一种方法,以便 DataReader 处理包含带有大二进制值的列的行
                else if(strCmdBehavior.Trim()=="SequentialAccess")
                {
                    myDataReader=myCommand.ExecuteReader(CommandBehavior.SequentialAccess);
                }
                else
                {
                    myDataReader=myCommand.ExecuteReader();
                }
               
            }
            catch(SqlException)
            {
                if(! myDataReader.IsClosed) myDataReader.Close();//发生异常时,关闭数据读取器
                InitDB();//重新初始化数据库连接,需要考证
                return false ;
            }
            return true;
           
        }

        /// <summary>
        /// 执行SQL的其它相关操作
        /// </summary>
        /// <param name="strSQL">要执行的SQL语句</param>
        /// <returns bool>执行正确,返回true;否则返回false </returns>
        public bool ExecSQL(string strSQL)
        {
            try
            {
                if(strSQL==null||strSQL.Trim()=="")
                    return false ;

                //判断是否需要对数据库进行初始化
                if(myConnection.State==ConnectionState.Closed)
                {
                    if(! InitDB()) return false ;//初始化失败
                 
                }
                myCommand =new SqlCommand(strSQL);
                myCommand.Connection=myConnection;
                myCommand.ExecuteNonQuery();
               
            }
            catch(SqlException )
            {
                //throw(new ApplicationException(ex.Message));
                InitDB();//重新初始化数据库连接,需要考证
                return false ;
            }
            return true;
        }

        /// <summary>
        /// 获取记录集合操作
        /// </summary>
        /// <param name="strSQL">查询记录语句</param>
        /// <param name="strConn">连接字符串</param>
        /// <param name="strSetName">数据集记录的逻辑名</param>
        /// <returns>返回的是数据集合</returns>
        public DataSet GetDataSet(string strSQL,ref string strSetName)
        {
            if(strSQL==null||strSQL.Trim()=="")
                return null ;
            DataSet dSet=new DataSet();
            try
            {
                SqlDataAdapter sqlAdapter=new SqlDataAdapter(strSQL,myConnection);
                sqlAdapter.Fill(dSet,strSetName);
                return dSet;
               
            }
            catch(SqlException)
            {
               return null;
            }

        }
       
    }
}
 
posted on 2006-10-11 14:03  田野的羽毛  阅读(530)  评论(2编辑  收藏  举报