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

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

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

OleDbAccess.cs原码如下:

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

usingSystem;
usingSystem.Data;
usingSystem.Data.OleDb;

namespaceSban
...
...{
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>
///
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值