ASP.NET数据库访问类

比较好的数据库访问类

using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Data.OleDb;
using System.Data;
using System.Configuration;
namespace PublicClass
{
    /// <summary>    ///
    /// Copyright(c) 2008~2011 KingBoy Software Co.,Ltd
    /// FileName:数据库访问抽象类
    /// Author:KingBoy  Version:1.0.0.0  Date:2008-10-05
    /// Description:提供不同数据库操作的标准类。
    /// </summary>
    public abstract class DB
    {
       
      #region var
         private string strService="";  // 定义服务器名称
         private string strDataBase=""; //定义数据库名称
         private string strUser="";  //定义登陆用户名
         private string strPassword  = ""; //定义登陆用户密码
         private int intType = 0 ;  //定义连接类型      
       #endregion
      #region property
        /// <summary>
        /// 连接服务器名称
        /// </summary>
        public string serviceName
        {
          get{return strService;}
          set{strService =value;}
        }
        /// <summary>
        /// 连接数据库名称
        /// </summary>
        public string databaseName
        {
         get{return strDataBase;}
         set{strDataBase=value;}
        }
        /// <summary>
        /// 连接数据库用户名称
        /// </summary>
        public string userName
        {
         get{return strUser;}
         set{strUser =value;}
        }
        /// <summary>
        /// 连接数据库密码
        /// </summary>
        public string password
        {
         get{return strPassword;}
         set{strPassword=value;}
        }
        /// <summary>
        /// 连接数据库类型
        /// </summary>
       public int type
       {
        get{return intType;}
        set{intType = value;}
       }
      
        #endregion
       #region method
        public abstract bool testConnect(); //测试连接的抽象方法,返回值如果为true表示测试连接成功,否则表示失败
        public abstract int sqlCommand(string cmd); //数据库操作命令,返回值大于0表示操作成功,否则表示失败。
        public abstract int sqlCommand(string[] strcmd);//多个数据库操作命令,返回值大于0表示操作成功,否则表示失败。
        public abstract int sqlCommand(SqlCommand cmd);//重载
        public abstract int sqlCommand(SqlCommand[] cmd);
        public abstract int sqlCommand(OleDbCommand cmd);
        public abstract int sqlCommandSp(SqlCommand cmd); //利用存储过程进行数据库操作,返回值大于0表示操作成功,否则表示失败。
        public abstract int sqlCommandSp(SqlCommand[] tmpcmd);
        public abstract int sqlCommandSp(OleDbCommand cmd);//利用存储过程进行数据库操作,返回值大于0表示操作成功,否则表示失败。
        public abstract int sqlCommandSp(OleDbCommand[] tmpcmd);
        public abstract DataSet dbToDS(string strcmd, string strTableName);//根据指定参数命令strcmd,从数据库中查询所需数据,以数据集返回。strTableName返回数据集中的表名。
        public abstract DataSet dbToDSSp(SqlCommand cmd, string strTableName);
        public abstract DataSet dbToDSSp(OleDbCommand cmd, string strTableName);
        public abstract int restoreFile(string strcmd, string fileName, string fileType, string filePath, string fileField);
        /// <summary>
        /// 读入指定文件,返回字节数组
        /// </summary>
        /// <param name="strPath">文件路径</param>
        /// <returns>成功返回字节数组,否则返回空</returns>
        public byte[] readFileToStream(string strPath)//文件转变成字节数组
        {
            try
            {
                //创建文件流对象,打开指定路径的文件
                System.IO.FileStream st = new System.IO.FileStream(strPath, System.IO.FileMode.Open, System.IO.FileAccess.Read);
                System.IO.BinaryReader mbr = new System.IO.BinaryReader(st);
                //定义能够存放文件的字节数组
                byte[] buffer = new byte[st.Length];
                //读取文件数据到字节数组
                mbr.Read(buffer, 0, (int)st.Length);//(从零开始存放,存放到st的长度)
                st.Close();
                return buffer;
            }
            catch (Exception)
            {
                return null;
            }
        }

       #endregion
      
    }
    /// <summary>
    /// 执行SQL Server数据库访问类
    /// </summary>
    public class DBSQL : DB
    {
        #region var
        private string strConnect = "";
        private SqlConnection sqlConnect = new SqlConnection(); //定义连接对象
        private SqlCommand sqlCmd = new SqlCommand();    //定义数据库操作命令
        private SqlDataAdapter sqlDA = new SqlDataAdapter(); //定义数据库操作适配器
        private DataSet ds = new DataSet(); //定义数据集
        #endregion
        #region property
        public string connection
        {
            get { return strConnect; }
            set { strConnect = value; }
        }
        #endregion
        #region method
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="strS">服务器名</param>
        /// <param name="strD">数据库名</param>
        /// <param name="strU">用户名</param>
        /// <param name="strP">密码</param>
        /// <param name="t">连接类型</param>
        public DBSQL(string strS, string strD, string strU, string strP)
        {
            serviceName  = strS;
           databaseName  = strD;
            userName  = strU;
            password  = strP;
            type = 3;
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        public DBSQL()
        {
            strConnect = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["ServerName"].ConnectionString;//从web.config中获取servername
            type = 4;
        }
        /// <summary>
        /// 获取连接对象
        /// </summary>
        /// <returns>返回连接对象</returns>
        private SqlConnection getConnection()
        {
            try
            {
               switch (type)
                {
                    case 0: //远程连接
                        strConnect = "Data Source=" + serviceName + ",1433;Network Library=DBMSSOCN;Initial Catalog=" + databaseName + ";User Id=" + userName  + ";password=" + password  + ";Connect Timeout=60;";
                        break;
                    case 1://本地连接
                        strConnect = "workstation id=" + serviceName + ";packet size=4096;integrated security=SSPI;data source=" + serviceName + ";persist security info=False;initial catalog=" + databaseName + ";Connect Timeout=60;";
                        break;
                    case 2: // 信用连接
                        strConnect = "Server=" + serviceName + ";Database=" + databaseName + ";User ID=" + userName  + ";Password=" +password  + ";Trusted_Connection=False" + ";Connect Timeout=60;";
                        break;
                    case 3 : //默认连接
                        strConnect = "Data Source=" + serviceName + ";User ID=" + userName  + ";Pwd=" + password  + ";Initial Catalog=" + databaseName + ";Connect Timeout=60;";
                        break;
                    default:  // 本地连接
                        //strConnect = "workstation id=" + serviceName + ";packet size=4096;integrated security=SSPI;data source=" + serviceName  + ";persist security info=False;initial catalog=" + databaseName + ";Connect Timeout=60;";
                        break;
                }
                sqlConnect.ConnectionString = strConnect;
                sqlCmd.Connection = sqlConnect;
              return sqlConnect;
            }
            catch (Exception)
            {
                return null;
            }
        }
        /// <summary>
        /// //测试连接的方法.
        /// </summary>
        /// <returns>返回值如果为true表示测试连接成功,否则表示失败</returns>
        public override  bool testConnect()
        {
            try
            {
                switch (type)
                {
                    case 0: //远程连接
                        strConnect = "Data Source=" + serviceName + ",1433;Network Library=DBMSSOCN;Initial Catalog=" + databaseName + ";User Id=" + userName  + ";password=" + password  + ";Connect Timeout=60;";
                        break;
                    case 1://本地连接
                        strConnect = "workstation id=" + serviceName + ";packet size=4096;integrated security=SSPI;data source=" + serviceName + ";persist security info=False;initial catalog=" + databaseName + ";Connect Timeout=60;";
                        break;
                    case 2: // 信用连接
                        strConnect = "Server=" + serviceName + ";Database=" + databaseName + ";User ID=" + userName  + ";Password=" +password  + ";Trusted_Connection=False" + ";Connect Timeout=60;";
                        break;
                    case 3 : //默认连接
                        strConnect = "Data Source=" + serviceName + ";User ID=" + userName  + ";Pwd=" + password  + ";Initial Catalog=" + databaseName + ";Connect Timeout=60;";
                        break;
                    default:  // 本地连接
                        //strConnect = "workstation id=" + serviceName + ";packet size=4096;integrated security=SSPI;data source=" + serviceName  + ";persist security info=False;initial catalog=" + databaseName + ";Connect Timeout=60;";
                        break;
                }
                sqlConnect.ConnectionString = strConnect;
                sqlCmd.Connection = sqlConnect;
                sqlConnect.Open();
                if (sqlConnect.State == ConnectionState.Open)
                    return true;
                else
                    return false;
            }
            catch (Exception )
            {
                return false;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        public string Sqldatareader(string strcom, int i)//占用网络资源,但反应快
        {
            try
            {
                sqlConnect = getConnection();
               if (sqlConnect!=null)
                {
                    if (sqlConnect.State != ConnectionState.Open)
                        sqlConnect.Open();
                   if (sqlConnect.State == ConnectionState.Open)
                   {
                    sqlCmd.Connection = sqlConnect;                  
                    sqlCmd.CommandText = strcom;
                    SqlDataReader dr = sqlCmd.ExecuteReader();
                    if (dr.Read())
                        return dr[i].ToString();
                    else
                        return "";
                   }
                   else
                   {
                       return "";
                   }
                  
                }
                else
                    return "";
            }
            catch (Exception )
            {
                //System.Windows.Forms.MessageBox.Show(ex.ToString());
                return "";
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        /// <summary>
        /// 数据库操作命令。
        /// </summary>
        /// <param name="cmd">数据库操作命令</param>
        /// <returns>返回值大于0表示操作成功,否则表示失败</returns>
        public override int sqlCommand(string cmd)
        {
            try
            {
                sqlConnect = getConnection();
                if (sqlConnect!=null) //数据库连接创建成功
                {
                    if (sqlConnect.State!=ConnectionState.Open)
                    sqlConnect.Open();                   
                    sqlCmd.CommandText = cmd;                  
                    return sqlCmd.ExecuteNonQuery();                                
                }
                else
                    return 0; //数据库连接创建失败
            }
            catch (Exception)
            {
                return -1;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        public bool todatareader(string strcom)
        {
            try
            {
                sqlConnect = getConnection();
                if (sqlConnect!=null)
                {
                    if (sqlConnect.State!=ConnectionState.Open)
                     sqlConnect.Open();
                if (sqlConnect.State == ConnectionState.Open)
                {
                sqlCmd.CommandText = strcom;
                    sqlCmd.CommandType = CommandType.Text;
                    SqlDataReader dr = sqlCmd.ExecuteReader();
                    if (dr.Read())
                        return true;
                    else
                        return false;
                }
                else
                {
                    return false;
                } 
                }
                else
                    return false;
            }
            catch (Exception ex)
            {
                //System.Windows.Forms.MessageBox.Show(ex.ToString());
                return false;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        /// <summary>
        /// 多个数据库操作命令。
        /// </summary>
        /// <param name="strcmd">数据库操作命令数组</param>
        /// <returns>返回值大于0表示操作成功,否则表示失败</returns>
        public override int sqlCommand(string[] strcmd)
        {
            try
            {
                sqlConnect = getConnection();
                if (sqlConnect!=null) //数据库连接成功
                {
                   if (sqlConnect.State!=ConnectionState.Open)
                     sqlConnect.Open();
                    if (sqlConnect.State == ConnectionState.Open)
                    {
                    SqlTransaction trans; //定义事务变量
                    trans = sqlConnect.BeginTransaction(); //开始事务
                    int i;
                    //循环执行数组命令
                    for (i = 0;i < strcmd.Length;i++)
                    {
                     
                        sqlCmd.Connection = sqlConnect;
                        sqlCmd.CommandTimeout = 0;
                        sqlCmd.CommandType = CommandType.Text;//字符串命令类型
                        sqlCmd.CommandText = strcmd[i];
                        sqlCmd.Transaction = trans; //命令获取事务
                        if (sqlCmd.ExecuteNonQuery() <= 0)
                        {
                            //执行失败,事务回滚。
                            trans.Rollback();
                            return 0;
                        }       
                    }
                    trans.Commit(); //执行事务;事务结束点。能执行则成功
                    return 1;
                    }
                    else
                    {
                        return -1;
                    }
                    
                }
                else
                {
                    return 0;
                }
            }
            catch (Exception)
            {
                return -1;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        /// <summary>
        /// 数据库命令操作
        /// </summary>
        /// <param name="cmd"></param>
        /// <returns></returns>
        public override int sqlCommand(SqlCommand[] cmd)
        {

            try
            {
                sqlConnect = getConnection();
                if (sqlConnect != null) //数据库连接成功
                {
                    if (sqlConnect.State != ConnectionState.Open)
                        sqlConnect.Open();
                    if (sqlConnect.State == ConnectionState.Open)
                    {
                        SqlTransaction trans; //定义事务变量
                        trans = sqlConnect.BeginTransaction(); //开始事务
                        int i;
                        //循环执行数组命令
                        for (i = 0; i <cmd.Length; i++)
                        {

                            cmd[i].Connection = sqlConnect;
                            cmd[i].CommandTimeout = 0;
                            cmd[i].Transaction = trans; //命令获取事务
                            if (cmd[i].ExecuteNonQuery() <= 0)
                            {
                                //执行失败,事务回滚。
                                trans.Rollback();
                                return 0;
                            }
                        }
                        trans.Commit(); //执行事务;事务结束点。能执行则成功
                        return 1;
                    }
                    else
                    {
                        return -1;
                    }

                }
                else
                {
                    return 0;
                }
            }
            catch (Exception)
            {
                return -1;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        /// <summary>
        /// 利用数据库操作对象进行数据库操作
        /// </summary>
        /// <param name="cmd">数据库操作命令对象</param>
        /// <returns>成功返回大于0的整数,否则返回0或小于0的整数</returns>
        public override  int sqlCommand(SqlCommand cmd)
        {
            try
            {
                sqlConnect = getConnection();
                if (sqlConnect!=null)
                {
                    cmd.Connection = sqlConnect;
                    if (sqlConnect.State!=ConnectionState.Open)
                    sqlConnect.Open();
                    if (sqlConnect.State == ConnectionState.Open)
                    {
                     return cmd.ExecuteNonQuery();
                    }
                    else
                        return -1; 
                }
                else
                    return 0;
            }
            catch (Exception)
            {
                return -1;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        public override  int sqlCommand(OleDbCommand cmd) { return -1; }
        /// <summary>
        /// 利用存储过程进行数据库操作。
        /// </summary>
        /// <param name="cmd">数据库操作命令对象</param>
        /// <returns>返回值大于0表示操作成功,否则表示失败</returns>
        public override int sqlCommandSp(SqlCommand cmd)
        {
            try
            {
                sqlConnect = getConnection();
                if (sqlConnect!=null) //数据库连接成功
                {
                    cmd.Connection = sqlConnect; //tmpcmd获取连接对象
                    if (sqlConnect.State!=ConnectionState.Open)
                     sqlConnect.Open();
                    if (sqlConnect.State == ConnectionState.Open)
                    {
                        cmd.CommandType = CommandType.StoredProcedure; //设置命令类型为存储过程                   
                        return cmd.ExecuteNonQuery();
                    }
                    else
                    {
                        return -1;
                    }                   
                }
                else
                    return 0;
            }
            catch (Exception)
            {
                return -1;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        /// <summary>
        /// 利用存储过程完成数据库操作
        /// </summary>
        /// <param name="tmpcmd">命令对象数组</param>
        /// <returns>返回值大于0表示操作成功,否则表示失败</returns>
        public override int sqlCommandSp(SqlCommand[] tmpcmd)
        {
            try
            {
                sqlConnect = getConnection();
                if (sqlConnect!=null) //连接成功
                {
                    if (sqlConnect.State!=ConnectionState.Open)
                     sqlConnect.Open();
                    if (sqlConnect.State == ConnectionState.Open)
                    {
                    SqlTransaction trans; //定义事务变量                  
                    trans = sqlConnect.BeginTransaction();//事务对象获取值
                    int i = 0;
                    //循环执行存储过程命令,如果失败将会执行会滚。
                    for (i = 0; i < tmpcmd.Length; i++)
                    {
                        tmpcmd[i].Connection = sqlConnect;
                        tmpcmd[i].CommandTimeout = 0;
                        tmpcmd[i].CommandType = CommandType.StoredProcedure;
                        if (tmpcmd[i].ExecuteNonQuery() <= 0)
                        {
                            trans.Rollback();
                            return 0;
                        }
                    }
                    trans.Commit();
                    return 1;
                    }
                    else
                    {
                        return -1;
                    }
                }
                else
                    return 0;
            }
            catch (Exception)
            { return -1; }
            finally
            {
                sqlConnect.Close();
            }
        }
        public override int sqlCommandSp(OleDbCommand cmd) { return -1; }//利用存储过程进行数据库操作,返回值大于0表示操作成功,否则表示失败。
        public override int sqlCommandSp(OleDbCommand[] tmpcmd) { return -1; }
        /// <summary>
        /// 根据指定参数命令strcmd,从数据库中查询所需数据,以数据集返回。strTableName返回数据集中的表名。
        /// </summary>
        /// <param name="strcmd">参数命令</param>
        /// <param name="strTableName">返回数据集中的表名</param>
        /// <returns>从数据库中查询所需数据,以数据集返回</returns>
        public override DataSet dbToDS(string strcmd, string strTableName)
        {
            try
            {
                DataSet ds = new DataSet(); //创建ds数据库对象
                sqlConnect = getConnection();
                if (sqlConnect!=null) //数据库连接成功
                {
                    if (sqlConnect.State!=ConnectionState.Open)
                      sqlConnect.Open();
                    if (sqlConnect.State == ConnectionState.Open)
                    {
                    sqlCmd.CommandText = strcmd;
                    sqlDA.SelectCommand = sqlCmd;
                    //sqlConnect.Open();
                    ds.Clear();
                    //sqlDA.SelectCommand.ExecuteNonQuery();
                    sqlDA.Fill(ds, strTableName); //填充数据集
                    return ds; //返回数据集
                    }
                    else
                    {
                        return null;
                    }
                  
                }
                else
                    return null;
            }
            catch (Exception ex)
            {
                return null;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        /// <summary>
        /// 根据指定参数命令cmd,从数据库中查询所需数据,以数据集返回。strTableName返回数据集中的表名。
        /// </summary>
        /// <param name="cmd">查询命令对象</param>
        /// <param name="strTableName">返回数据集中的表名</param>
        /// <returns>以数据集形式返回数据,否则返回null</returns>
        public override DataSet dbToDSSp(SqlCommand cmd, string strTableName)
        {
            try
            {
                sqlConnect = getConnection();
                if (sqlConnect!=null) //连接成功
                {
                    if (sqlConnect.State!=ConnectionState.Open)
                      sqlConnect.Open();
                     if (sqlConnect.State == ConnectionState.Open)
                     {
                     cmd.Connection = sqlConnect;
                    cmd.CommandType = CommandType.StoredProcedure; //设置命令类型为存储过程
                    sqlDA.SelectCommand = cmd;
                    DataSet ds = new DataSet(); //创建数据集对象
                  
                    ds.Clear();
                   // sqlDA.SelectCommand.ExecuteNonQuery();
                    sqlDA.Fill(ds, strTableName); //填充数据集
                    return ds;
                     }
                     else
                     {
                         return null;
                     }
                   
                }
                else
                    return null;
            }
            catch (Exception)
            {
                return null;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        public override DataSet dbToDSSp(OleDbCommand cmd, string strTableName) { return null; }
        /// <summary>
        /// 恢复数据库中的文件
        /// </summary>
        /// <param name="strcmd">查询命令</param>
        /// <param name="fileName">恢复的文件名</param>
        /// <param name="fileType">文件类型</param>
        /// <param name="filePath">存放路径</param>
        /// <param name="fileField">数据库中存放文件的字段名</param>
        /// <returns>成功返回大于0的整数,否则表示失败</returns>
        public override int restoreFile(string strcmd, string fileName, string fileType, string filePath, string fileField)
        {
            try
            {
                DataSet ds = new DataSet("temp");
                if (fileType.Length <= 0) return 0; //文件类型不合法,返回0
                ds = dbToDS(strcmd, "temp");//根据查询指令获取数据
                if (ds != null)
                {
                    byte[] b = (byte[])ds.Tables["temp"].Rows[0][fileField];
                    if (b.Length > 0)
                    {
                        System.IO.FileStream stream1 = new System.IO.FileStream(filePath + fileName + "." + fileType, System.IO.FileMode.OpenOrCreate);
                        stream1.Write(b, 0, b.Length);
                        return 1;
                    }
                    else
                        return 0;
                }
                else
                    return 0;

            }
            catch (Exception)
            {
                return 0;
            }
            finally
            {
                sqlConnect.Close();
            }
        }
        /// <summary>
        /// 备份数据库,path备份完整的数据库路经
        /// </summary>
        /// <param name="sourceDBName">源数据库名</param>
        /// <param name="path">别分路径</param>
        /// <returns>返回1表示成功,否则表示失败</returns>
        public int backupDB(string sourceDBName, string path)
        {
            try
            {
                sqlCommand("BACKUP DATABASE " + sourceDBName + " TO disk='" + path + ".bak'");
                return 1;
            }
            catch (Exception)
            {
                return -1;
            }
        }
        /// <summary>
        /// 还原数据库
        /// </summary>
        /// <param name="sourceDBName">源数据库名</param>
        /// <param name="path">还原路径</param>
        /// <returns>返回1表示成功,否则表示失败</returns>
        public int restoreDB(string sourceDBName, string path)
        {
            try
            {
                sqlCommand("RESTORE DATABASE " + sourceDBName + " FROM DISK = '" + path + "'");
                return 1;
            }
            catch (Exception)
            {
                return -1;
            }
        }          
#endregion
       
    }
    /// <summary>
    /// OLE类型数据库操作
    /// </summary>
    public class DBOLE : DB
    {
        #region var
        private string strConnect = "";
        private OleDbConnection oleConnect = new OleDbConnection(); //定义连接对象
        private OleDbCommand oleCmd = new OleDbCommand();  //定义数据库操作命令
        private OleDbDataAdapter oleDA = new OleDbDataAdapter(); //定义数据库操作适配器
        private DataSet oleDS = new DataSet(); //定义数据集
        #endregion
        #region method
        /// <summary>
        /// 构造函数
        /// </summary>
        public DBOLE()
        {
            databaseName = ConfigurationSettings.AppSettings["accessConnection"];
        }
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="strD">数据库名</param>
        /// <param name="strU">用户名</param>
        /// <param name="strP">密码</param>
        /// <param name="intT">连接类型</param>
        public DBOLE(string strD, string strU, string strP, int  intT)
        {
            databaseName = strD;
            userName  = strU;
            password  = strP;
            type  = intT  ;
        }
        /// <summary>
        /// 测试连接的抽象方法,返回值如果为true表示测试连接成功,否则表示失败
        /// </summary>
        /// <returns></returns>
        public override  bool testConnect()
        {
            try
            {
                switch (type )
                {
                    case 0  :
                        strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databaseName  + ";User Id=" + userName  + ";Password=" + password  + "; ";
                        break;
                    case 1 :
                        strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databaseName + ";Jet OLEDB:Database Password=" +password  + ";";
                        break;
                    case 2 :
                        strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databaseName + ";Jet OLEDB:System Database=system.mdw;";
                        break;
                    case 3 :
                        strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databaseName + ";Jet OLEDB:System Database=system.mdw;User ID=" + userName  + ";Password=" + password  + ";";
                        break;
                    default:
                        strConnect = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + databaseName + ";Jet OLEDB:System Database=system.mdw;";
                        break;
                }
                oleConnect.ConnectionString = strConnect;
                oleCmd.Connection = oleConnect;
                oleConnect.Open();
                if (oleConnect.State == ConnectionState.Open)
                    return true;
                else
                    return false;
            }
            catch (Exception )
            {
                return false;
            }
            finally
            {
                oleConnect.Close();
            }
        }
        /// <summary>
        /// 数据库操作命令。
        /// </summary>
        /// <param name="cmd">数据库命令字符串</param>
        /// <returns>返回值大于0表示操作成功,否则表示失败</returns>
        public override int sqlCommand(string cmd)
        {
            try
            {
                if (testConnect() == true)
                {
                    oleCmd.CommandText = cmd;
                    oleConnect.Open();
                    return oleCmd.ExecuteNonQuery();
                }
                else
                    return 0;
            }
            catch (Exception)
            {
                return -1;
            }
            finally
            {
                oleConnect.Close();
            }
        }
        /// <summary>
        /// 数据库命令对象对数据库进行操作
        /// </summary>
        /// <param name="cmd">数据库命令对象</param>
        /// <returns>返回值大于0表示操作成功,否则表示失败</returns>
        public override int sqlCommand(OleDbCommand cmd)
        {
            try
            {
                if (testConnect() == true)
                {
                    cmd.Connection = oleConnect;
                    oleConnect.Open();
                    return cmd.ExecuteNonQuery();
                }
                else
                    return 0;
            }
            catch (Exception )
            {
                return -1;
            }
            finally
            {
                oleConnect.Close();
            }
        }
        public override int sqlCommand(string[] strcmd){ return -1; }//多个数据库操作命令,返回值大于0表示操作成功,否则表示失败。
        public override int sqlCommand(SqlCommand cmd) { return -1; }
        public override int sqlCommandSp(SqlCommand cmd) { return -1; } //利用存储过程进行数据库操作,返回值大于0表示操作成功,否则表示失败。
        public override int sqlCommand(SqlCommand[] cmd){return -1;}      
        public override int sqlCommandSp(SqlCommand[] tmpcmd) { return -1; }
        public override int sqlCommandSp(OleDbCommand cmd) { return -1; }//利用存储过程进行数据库操作,返回值大于0表示操作成功,否则表示失败。
        public override int sqlCommandSp(OleDbCommand[] tmpcmd) { return -1; }
        /// <summary>
        /// 根据指定参数命令strcmd,从数据库中查询所需数据,以数据集返回。strTableName返回数据集中的表名。
        /// </summary>
        /// <param name="strcmd">查询命令字符串</param>
        /// <param name="strTableName">数据集中的表明</param>
        /// <returns>以数据集返回</returns>
        public override DataSet dbToDS(string strcmd, string strTableName)
        {
            try
            {
                if (testConnect() == true)
                {
                    oleCmd.CommandText = strcmd;
                    oleDA.SelectCommand = oleCmd;
                    oleConnect.Open();
                    oleDS.Clear();
                    oleDA.SelectCommand.ExecuteNonQuery();
                    oleDA.Fill(oleDS, strTableName);
                    return oleDS;
                }
                else
                    return null;
            }
            catch (Exception)
            {
                return null;
            }
            finally
            {
                oleConnect.Close();
            }
        }
        public override DataSet dbToDSSp(SqlCommand cmd, string strTableName) { return null; }
        public override DataSet dbToDSSp(OleDbCommand cmd, string strTableName) { return null; }
        /// <summary>
        /// 恢复数据库中的文件
        /// </summary>
        /// <param name="strcmd">查询命令</param>
        /// <param name="fileName">恢复的文件名</param>
        /// <param name="fileType">文件类型</param>
        /// <param name="filePath">存放路径</param>
        /// <param name="fileField">数据库中存放文件的字段名</param>
        /// <returns>成功返回大于0的整数,否则表示失败</returns>
        public override int restoreFile(string strcmd, string fileName, string fileType, string filePath, string fileField)
        {
            try
            {
                DataSet ds = new DataSet("temp");
                if (fileType.Length <= 0) return 0; //文件类型不合法,返回0
                ds = dbToDS(strcmd, "temp");//根据查询指令获取数据
                if (ds != null)
                {
                    byte[] b = (byte[])ds.Tables["temp"].Rows[0][fileField];
                    if (b.Length > 0)
                    {
                        System.IO.FileStream stream1 = new System.IO.FileStream(filePath + fileName + "." + fileType, System.IO.FileMode.OpenOrCreate);
                        stream1.Write(b, 0, b.Length);
                        return 1;
                    }
                    else
                        return 0;
                }
                else
                    return 0;

            }
            catch (Exception)
            {
                return 0;
            }
            finally
            {
                oleConnect.Close();
            }
        }
        /// <summary>
        /// 备份数据库,path备份完整的数据库路经
        /// </summary>
        /// <param name="sourceDBName">源数据库名</param>
        /// <param name="path">别分路径</param>
        /// <returns>返回1表示成功,否则表示失败</returns>
        public int backupDB(string sourceDBName, string path)
        {
            try
            {
                sqlCommand("BACKUP DATABASE " + sourceDBName + " TO disk='" + path + ".bak'");
                return 1;
            }
            catch (Exception)
            {
                return -1;
            }
        }
        /// <summary>
        /// 还原数据库
        /// </summary>
        /// <param name="sourceDBName">源数据库名</param>
        /// <param name="path">还原路径</param>
        /// <returns>返回1表示成功,否则表示失败</returns>
        public int restoreDB(string sourceDBName, string path)
        {
            try
            {
                sqlCommand("RESTORE DATABASE " + sourceDBName + " FROM DISK = '" + path + "'");
                return 1;
            }
            catch (Exception)
            {
                return -1;
            }
        }                   
#endregion
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值