这里我们尝试创建一个数据库连接类,只需调用该对象就可以在整个项目中使用它。 对于试图简化代码并提高编码标准的开发人员来说,这将非常有用
创建一个名为DataObjectClass的新类,并提供以下代码
using Microsoft.VisualBasic;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Data.OracleClient;
using System.Configuration;
using System.Web.HttpContext;
public class DataObjectClass : IDisposable
{
private string strCon;
private OracleConnection objCon;
private OracleTransaction objTrans;
private string strErrorMessage = "";
private int intRowsAffected = 0;
private bool blnIsTransactionRequired = false;
private bool blnIsTransactionAlreadyOn = false;
private bool blnIsConnectionRequired = false;
public object objOraDB;
public static string ConnectionString;
private decimal decCVConcurrentSeqId;
private bool boolCVIsAvalabilityChecked = false;
private bool boolCVIsTransactionLocked = false;
string strCVQuery;
static int decCVAutoUnlockDuration = 0;
public void Dispose()
{
Dispose(true);
}
public int RowsAffected
{
//Use this property to know how many records have been affected by Insert/Update/statement
get { return intRowsAffected; }
}
public string ErrorMessage
{
//Use this property to know the error message in case of an exception
get { return strErrorMessage; }
}
private OracleCommand BuildIntCommand(string storedProcName, IDataParameter[] parameters)
{
OracleCommand objCmd = BuildQueryCommand(storedProcName, parameters);
return objCmd;
}
private OracleCommand BuildQueryCommand(string storedProcName, IDataParameter[] parameters)
{
try
{
OracleCommand objCmd = new OracleCommand(storedProcName, objCon);
objCmd.CommandType = CommandType.StoredProcedure;
foreach (OracleParameter parameter in parameters)
{
objCmd.Parameters.Add(parameter);
}
return objCmd;
}
catch (Exception ex)
{
}
}
private OracleCommand BuildQueryCommand(string storedProcName)
{
OracleCommand objCmd = new OracleCommand(storedProcName, objCon);
objCmd.CommandType = CommandType.StoredProcedure;
return objCmd;
}
private OracleCommand BuildQueryCommandWithSQL(string SQLString)
{
OracleCommand objCmd = new OracleCommand(SQLString, objCon);
objCmd.CommandType = CommandType.Text;
return objCmd;
}
private OracleCommand BuildQueryCommandWithSQL(string SQLString, IDataParameter[] parameters)
{
try
{
OracleCommand objCmd = new OracleCommand(SQLString, objCon);
objCmd.CommandType = CommandType.Text;
foreach (OracleParameter parameter in parameters)
{
objCmd.Parameters.Add(parameter);
}
return objCmd;
}
catch (Exception ex)
{
}
}
public DataTable getSQLDataTable(string SQLString)
{
intRowsAffected = 0;
strErrorMessage = "";
DataTable dataTable = new DataTable();
OracleDataAdapter OracleDA = new OracleDataAdapter();
try
{
if (!blnIsTransactionRequired)
{
objCon = new OracleConnection(strCon);
objCon.Open();
OracleDA.SelectCommand = BuildQueryCommandWithSQL(SQLString);
}
else
{
if (!blnIsTransactionAlreadyOn)
{
objTrans = objCon.BeginTransaction(IsolationLevel.ReadCommitted);
blnIsTransactionAlreadyOn = true;
}
OracleDA.SelectCommand = BuildQueryCommandWithSQL(SQLString);
OracleDA.SelectCommand.Transaction = objTrans;
}
//OracleDA.Fill(dataTable)
OracleDA.SelectCommand.CommandType = CommandType.Text;
CVStTime = DateTime.Now.TimeOfDay.TotalMilliseconds;
OracleDA.Fill(dataTable);
CVEndTime = DateTime.Now.TimeOfDay.TotalMilliseconds;
csApplicationDatabaseLogger(CVStTime, CVEndTime, "getSQLDataTable # " + SQLString);
return dataTable;
}
catch (Exception ex)
{
strErrorMessage = "Message :" + ex.Message;
}
finally
{
if (!blnIsTransactionRequired)
{
if ((objCon != null))
{
objCon.Close();
objCon.Dispose();
objCon = null;
}
}
OracleDA.Dispose();
OracleDA = null;
}
}
public DataTable getSQLDataTable(string SQLString, IDataParameter[] parameters)
{
intRowsAffected = 0;
strErrorMessage = "";
DataTable dataTable = new DataTable();
OracleDataAdapter OracleDA = new OracleDataAdapter();
try
{
if (!blnIsTransactionRequired)
{
objCon = new OracleConnection(strCon);
objCon.Open();
OracleDA.SelectCommand = BuildQueryCommandWithSQL(SQLString, parameters);
}
else
{
if (!blnIsTransactionAlreadyOn)
{
objTrans = objCon.BeginTransaction(IsolationLevel.ReadCommitted);
blnIsTransactionAlreadyOn = true;
}
OracleDA.SelectCommand = BuildQueryCommandWithSQL(SQLString, parameters);
OracleDA.SelectCommand.Transaction = objTrans;
}
OracleDA.SelectCommand.CommandType = CommandType.Text;
OracleDA.Fill(dataTable);
return dataTable;
}
catch (Exception ex)
{
strErrorMessage = "Message :" + ex.Message;
}
finally
{
if (!blnIsTransactionRequired)
{
if ((objCon != null))
{
objCon.Close();
objCon.Dispose();
objCon = null;
}
}
OracleDA.Dispose();
OracleDA = null;
}
}
public DataRow getSQLDataRow(string SQLString)
{
intRowsAffected = 0;
strErrorMessage = "";
DataSet dataSet = new DataSet();
OracleDataAdapter OracleDA = new OracleDataAdapter();
try
{
if (!blnIsTransactionRequired)
{
objCon = new OracleConnection(strCon);
objCon.Open();
OracleDA.SelectCommand = BuildQueryCommandWithSQL(SQLString);
}
else
{
if (!blnIsTransactionAlreadyOn)
{
objTrans = objCon.BeginTransaction(IsolationLevel.ReadCommitted);
blnIsTransactionAlreadyOn = true;
}
OracleDA.SelectCommand = BuildQueryCommandWithSQL(SQLString);
OracleDA.SelectCommand.Transaction = objTrans;
}
CVStTime = DateTime.Now.TimeOfDay.TotalMilliseconds;
OracleDA.Fill(dataSet, 0, 1, "jay");
CVEndTime = DateTime.Now.TimeOfDay.TotalMilliseconds;
csApplicationDatabaseLogger(CVStTime, CVEndTime, "getSQLDataRow # " + SQLString);
if ((dataSet != null) && dataSet.Tables.Count > 0 && dataSet.Tables[0].Rows.Count > 0)
{
return dataSet.Tables[0].Rows[0];
}
}
catch (Exception ex)
{
strErrorMessage = "Message :" + ex.Message;
}
finally
{
if (!blnIsTransactionRequired)
{
if ((objCon != null))
{
objCon.Close();
objCon.Dispose();
objCon = null;
}
}
OracleDA.Dispose();
OracleDA = null;
}
}
public int ExecuteSQL(string SQLString)
{
intRowsAffected = 0;
strErrorMessage = "";
OracleCommand objCmd = default(OracleCommand);
try
{
if (!blnIsTransactionRequired)
{
objCon = new OracleConnection(strCon);
objCon.Open();
objCmd = BuildQueryCommandWithSQL(SQLString);
}
else
{
if (!blnIsTransactionAlreadyOn)
{
objTrans = objCon.BeginTransaction(IsolationLevel.ReadCommitted);
blnIsTransactionAlreadyOn = true;
}
objCmd = BuildQueryCommandWithSQL(SQLString);
objCmd.Transaction = objTrans;
}
CVStTime = DateTime.Now.TimeOfDay.TotalMilliseconds;
intRowsAffected = objCmd.ExecuteNonQuery;
CVEndTime = DateTime.Now.TimeOfDay.TotalMilliseconds;
csApplicationDatabaseLogger(CVStTime, CVEndTime, "ExecuteSQL # " + SQLString);
return intRowsAffected;
}
catch (Exception ex)
{
strErrorMessage = "Message :" + ex.Message;
}
finally
{
if (!blnIsTransactionRequired)
{
if ((objCon != null))
{
objCon.Close();
objCon.Dispose();
objCon = null;
}
}
if ((objCmd != null))
{
objCmd.Parameters.Clear();
objCmd.Dispose();
objCmd = null;
}
}
}
public int ExecuteSQL(string SQLString, IDataParameter[] parameters)
{
intRowsAffected = 0;
strErrorMessage = "";
OracleCommand objCmd = default(OracleCommand);
try
{
if (!blnIsTransactionRequired)
{
objCon = new OracleConnection(strCon);
objCon.Open();
objCmd = BuildQueryCommandWithSQL(SQLString, parameters);
}
else
{
if (!blnIsTransactionAlreadyOn)
{
objTrans = objCon.BeginTransaction(IsolationLevel.ReadCommitted);
blnIsTransactionAlreadyOn = true;
}
objCmd = BuildQueryCommandWithSQL(SQLString, parameters);
objCmd.Transaction = objTrans;
}
intRowsAffected = objCmd.ExecuteNonQuery;
return intRowsAffected;
}
catch (Exception ex)
{
strErrorMessage = "Message :" + ex.Message;
}
finally
{
if (!blnIsTransactionRequired)
{
if ((objCon != null))
{
objCon.Close();
objCon.Dispose();
objCon = null;
}
}
if ((objCmd != null))
{
objCmd.Parameters.Clear();
objCmd.Dispose();
objCmd = null;
}
}
}
public void BeginTransaction()
{
objCon = new OracleConnection(strCon);
objCon.Open();
blnIsTransactionRequired = true;
}
public void CloseConnection()
{
if ((objCon != null))
{
objCon.Close();
objCon.Dispose();
objCon = null;
}
}
private OracleCommand BuildQueryCommandForSQLWithParam(string SQLString, IDataParameter[] parameters)
{
try
{
OracleCommand objCmd = objCon.CreateCommand();
var _with1 = objCmd;
_with1.CommandType = CommandType.Text;
_with1.CommandText = SQLString;
_with1.Parameters.Clear();
if ((parameters != null))
{
foreach (OracleParameter parameter in parameters)
{
if (!objCmd.Parameters.Contains(parameter))
{
objCmd.Parameters.Add(parameter);
}
}
}
return objCmd;
}
catch (Exception ex)
{
throw ex;
}
}
您可以在其他类上调用这些函数,如下所示
string strsql;
DataTable dtvalue;
DataObjectClass objdataclass;
strsql = "select * from tablle";
dtvalue = objdataclass.getSQLDataTable(strsql);