以前写的一个访问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;
}
}
}
}
* 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;
}
}
}
}