关于c#.Net操作Access数据库的类,支持事务处理

为提高程序效率计,类中所有方法均为静态方法。

oledb驱动,支持事务处理。引类抛砖引玉,不足之处大师们多多指教。

OleDbAccess.cs原码如下:

/**/ /*
*@Sban2006-12
*Access数据库Oldb操作类
*/

using System;
using System.Data;
using System.Data.OleDb;

namespace Sban
...
... {
publicstaticclassOleDbAccess
...
...{
/**//**//**////<summary>
///取得数据库连接
///</summary>
///<paramname="connectionString"></param>
///<returns></returns>

publicstaticOleDbConnectionGetConnection(stringconnectionString)
...
...{
OleDbConnectionconn
=newOleDbConnection(connectionString);
try
...
...{
conn.Open();
}

catch(Exceptione)
...
...{
thrownewException("数据库连接字符串可能有问题!",e);
}


returnconn;
}

/**//**//**////<summary>
///
///</summary>
///<paramname="param"></param>
///<returns></returns>

publicstaticstringFiltArg(refstringparam)
...
...{
param
=System.Web.HttpUtility.HtmlEncode(param);
param
=param.Replace("'","").Replace(""","");

returnparam;
}

/**//**//**////<summary>
///获得oledb连接字符串
///</summary>
///<paramname="dataBasePath"></param>
///<returns></returns>

publicstaticstringGetConnectionString(stringdataBasePath)
...
...{
return"PROVIDER=Microsoft.Jet.OLEDB.4.0;DATASource="+dataBasePath;
}


/**//**//**////<summary>
///
///</summary>
///<paramname="conn"></param>
///<returns></returns>

publicstaticOleDbCommandGetCommand(refOleDbConnectionconn)
...
...{
returnconn.CreateCommand();
}


/**//**//**////<summary>
///starttransactionandreturn
///</summary>
///<paramname="conn"></param>
///<paramname="cmd"></param>
///<returns></returns>

publicstaticOleDbTransactionStartTrans(refOleDbConnectionconn,refOleDbCommandcmd)
...
...{
returncmd.Transaction=conn.BeginTransaction();
}


publicstaticvoidRollTrans(refOleDbTransactiontrans)
...
...{
trans.Rollback();
}


publicstaticvoidCommitTrans(refOleDbTransactiontrans)
...
...{
trans.Commit();
}


/**//**//**////<summary>
///
///</summary>
///<paramname="cmd"></param>
///<paramname="query"></param>
///<paramname="param"></param>

publicstaticvoidExecuteNonQuery(refOleDbCommandcmd,stringquery,paramsOleDbParameter[]param)
...
...{
cmd.CommandType
=CommandType.Text;
cmd.CommandText
=query;
cmd.Parameters.Clear();
if(null!=param)
cmd.Parameters.AddRange(param);

try
...
...{
cmd.ExecuteNonQuery();
}

catch(Exceptione)
...
...{
thrownewException("ExecuteNonQuery:执行数据库操作时出现问题!",e);
}

}


/**//**//**////<summary>
///
///</summary>
///<paramname="conn"></param>
///<paramname="cmd"></param>

publicstaticvoidDispose(refOleDbConnectionconn,refOleDbCommandcmd)
...
...{
try
...
...{
conn.Close();
cmd.Dispose();
conn.Dispose();
}

catch
...
...{
//thrownewException("执行数据库对象清除可能有问题!",e);
}

}


/**//**//**////<summary>
///GetParametersarray
///</summary>
///<paramname="arr"></param>
///<returns></returns>

publicstaticOleDbParameter[]GetParameters(paramsobject[]arr)
...
...{
OleDbParameter[]paramArray
=newOleDbParameter[arr.Length];
object[]o;

for(intj=0;j<arr.Length;j++)
...
...{
o
=(object[])arr[j];
paramArray[j]
=GetParameter(o);
}


returnparamArray;
}


/**//**//**////<summary>
///GetParameter
///</summary>
///<paramname="arr"></param>
///<returns></returns>

publicstaticOleDbParameterGetParameter(paramsobject[]arr)
...
...{
OleDbParameterparam
=newOleDbParameter(arr[0].ToString(),arr[1]);
if(arr.Length>2)
param.OleDbType
=(OleDbType)arr[2];
if(arr.Length>3)
param.Size
=Convert.ToInt32(arr[3]);

returnparam;
}


/**//**//**////<summary>
///executequeryandreturndataset.
///</summary>
///<paramname="cmd"></param>
///<paramname="query"></param>
///<paramname="param"></param>
///<returns></returns>

publicstaticOleDbDataReaderExecuteReader(refOleDbCommandcmd,stringquery,paramsOleDbParameter[]param)
...
...{
OleDbDataReaderdr
=null;

cmd.CommandType
=CommandType.Text;
cmd.CommandText
=query;
cmd.Parameters.Clear();
if(null!=param)
cmd.Parameters.AddRange(param);

try
...
...{
dr
=cmd.ExecuteReader();
}

catch(Exceptione)
...
...{
thrownewException("ExecuteReader:执行数据库操作时出现问题!",e);
}


returndr;
}


/**//**//**////<summary>
///
http://images.csdn.net/syntaxhighlighting/Outli
分享到:
评论

你可能感兴趣的:(C++,c,.net,C#,Access)