比较好的数据库访问类
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
}
}