📄 dbconnection.cs
字号:
using System;
using System.Data;
using System.Collections;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.Configuration;
using System.Xml;
namespace BxDataExport
{
//数据库类型
public enum eDbType {DB_SQL_SERVER = 1, DB_OLE_DB};
/// <summary>
/// CDbManager 支持SQL数据库与其他OleDB的支持的数据库,对于SQL数据库则以
/// SQL Client的方式连接,以提高效率,其他则以OldDB的方式连接。
/// </summary>
public sealed class DbConnection //不允许继承
{
#region 构造/析构函数
/// <summary>
/// 构造函数
/// </summary>
public DbConnection(){
}
#endregion
//默认情况为MS SQL数据库
private eDbType _DbType = eDbType.DB_SQL_SERVER;
//private eDbType _DbType = eDbType.DB_OLE_DB;
public eDbType DbType
{
get {return _DbType;}
set {_DbType = value;}
}
private string _ConnectionString; //连接字符串
public string ConnectionString
{
get{return _ConnectionString;}
set{_ConnectionString = value;}
}
private IDbDataAdapter Adapter = null; //数据库控制集
private IDbConnection Connection = null; //数据库连接
private IDbTransaction Transaction = null; //数据库事务
private IDbCommand Command = null; //SQL语句命令
private IDataReader DataReader = null; //数据集
// public static CDbManager Manager = new CDbManager(); //管理器
//private SystemException DbException = null;
// public CDbManager DbManager
// {get{return Manager;}}
public IDbConnection Dbconnection
{
get{return Connection;}
set{Connection = value;}
}
public IDbTransaction DbTransaction
{
get{return Transaction;}
set{Transaction = value;}
}
public IDbCommand DbCommand
{get{return Command;}}
public IDbDataAdapter DbAdapter
{get{return Adapter;}}
public IDataReader DbDataReader
{get{return DataReader;}}
#region 取得当前程序的数据库连接
public static string getDBConnStr()
{
return ConfigurationSettings.AppSettings["ConnectionString"].ToString();
}
#endregion
public static string getDataAccessStr(string nodeName,string attributeName)
{
return ConfigurationSettings.AppSettings[attributeName].ToString();
}
#region 事务处理
public void BeginTransaction() //开始事务
{
if(Connection != null)
if(Transaction == null)
Transaction = Connection.BeginTransaction();
}
public void Commit() //提交事务
{
if(Transaction != null)
{
Transaction.Commit();
Transaction = null;
}
}
public void Rollback() //回滚事务
{
if(Transaction != null)
{
Transaction.Rollback();
Transaction = null;
}
}
#endregion
#region 数据库操作
#region 打开数据库连接
public void OpenConnection() //打开数据库连接
{
if(Connection == null)
{
switch(_DbType)
{
case eDbType.DB_SQL_SERVER:
Connection = new SqlConnection(ConnectionString);
break;
case eDbType.DB_OLE_DB:
Connection = new OleDbConnection(ConnectionString);
break;
default:
throw new SystemException("数据库类型未指定!");
}
}
//打开连接
if(Connection.State != ConnectionState.Open)
{
//Connection.ConnectionTimeout = 60;
Connection.Open();
}
}
#endregion
#region 关闭数据库连接
public void CloseConnection() //关闭数据库连接
{
//关闭命令
if(DataReader != null)
DataReader = null;
//关闭命令
if(Command != null)
Command = null;
//关闭事务
if(Transaction != null)
Transaction = null;
//关闭数据库连接
if(Connection != null)
{
//仍处于连接状态则关闭数据库连接
if(Connection.State == ConnectionState.Open)
{
Connection.Close();
Connection = null;
}
}
}
#endregion
#region 构造SQL语句
public void OpenCommand(string cmdText)
{
if(Connection == null)
OpenConnection();
if(Command != null)
{
if(Connection != null)
Command.CommandText = cmdText;
//事务
if(Transaction != null && Command.Transaction == null)
Command.Transaction = Transaction;
}
else
{
if(Connection != null)
{
switch(_DbType)
{
case eDbType.DB_SQL_SERVER:
SqlConnection SqlDbConn = (SqlConnection)Connection;
if(SqlDbConn != null)
Command = new SqlCommand(cmdText, SqlDbConn);
break;
case eDbType.DB_OLE_DB:
OleDbConnection OleDbConn = (OleDbConnection)Connection;
if(OleDbConn != null)
Command = new OleDbCommand(cmdText, OleDbConn);
break;
default:
throw new SystemException("数据库类型未指定!");
}
//事务
if(Transaction != null)
Command.Transaction = Transaction;
}
}
}
#endregion
#region 执行更新SQL语句
public int ExecuteNonQuery()
{
if(Command != null)
{
Command.CommandTimeout = 0;
return Command.ExecuteNonQuery();
}
else
{return 0;}
}
#endregion
#region 构造Adapter语句
public void OpenAdapter(string cmdText)
{
Adapter = null;
if(Connection == null)
OpenConnection();
if(Adapter == null)
{
if(Connection != null)
{
switch(_DbType)
{
case eDbType.DB_SQL_SERVER:
SqlConnection SqlDbConn = (SqlConnection)Connection;
if(SqlDbConn != null)
Adapter = new SqlDataAdapter(cmdText, SqlDbConn);
break;
case eDbType.DB_OLE_DB:
OleDbConnection OleDbConn = (OleDbConnection)Connection;
if(OleDbConn != null)
Adapter = new OleDbDataAdapter(cmdText, OleDbConn);
break;
default:
throw new SystemException("数据库类型未指定!");
}
}
}
}
#endregion
#region 构造DataReader
public void ExecuteReader()
{
if(DataReader != null)
{
DataReader.Close();
DataReader = null;
}
if(Command != null)
DataReader = Command.ExecuteReader();
}
#endregion
#region 执行DataReader
public bool ReadDataReader()
{
if(DataReader != null)
return DataReader.Read();
else
return false;
}
#endregion
/*
#region 取DataReader记录条数
public int ReaderCount()
{
int readerCount = 0;
if(DataReader != null)
{
while(DataReader.Read())
{
readerCount++;
}
DataReader.
}
}
#endregion
*/
#region 取DataReader字段变量
public object GetValue(string ValueTitle)
{
if(DataReader != null)
return DataReader[ValueTitle];
else
return null;
}
#endregion
#region 取字段值
public object this[string title]
{
get
{
if(DataReader == null)
return null;
else
return DataReader[title];
}
}
#endregion
#region 取字段值
public object this[int index]
{
get
{
if(DataReader == null)
return null;
else
return DataReader[index];
}
}
#endregion
#region 字段个数
public int FieldCount
{
get
{
if(DataReader != null)
return DataReader.FieldCount;
else
return 0;
}
}
#endregion
#region 关闭DataReader
public void CloseDataReader()
{
if(DataReader != null)
{
DataReader.Close();
DataReader = null;
}
}
#endregion
#endregion
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -