关于c#.Net操作Access数据库的类,支持事务处理
2007-04-20 19:30
477 查看
为提高程序效率计,类中所有方法均为静态方法。
oledb驱动,支持事务处理。引类抛砖引玉,不足之处大师们多多指教。
OleDbAccess.cs原码如下:
/**//*
* @Sban 2006-12
* Access数据库Oldb操作类
*/
using System;
using System.Data;
using System.Data.OleDb;
namespace Sban
......{
public static class OleDbAccess
......{
/**//**//**//// <summary>
/// 取得数据库连接
/// </summary>
/// <param name="connectionString"></param>
/// <returns></returns>
public static OleDbConnection GetConnection(string connectionString)
......{
OleDbConnection conn = new OleDbConnection(connectionString);
try
......{
conn.Open();
}
catch (Exception e)
......{
throw new Exception("数据库连接字符串可能有问题!", e);
}
return conn;
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static string FiltArg(ref string param)
......{
param = System.Web.HttpUtility.HtmlEncode(param);
param = param.Replace("'","‘").Replace(""","“");
return param;
}
/**//**//**//// <summary>
/// 获得oledb连接字符串
/// </summary>
/// <param name="dataBasePath"></param>
/// <returns></returns>
public static string GetConnectionString(string dataBasePath)
......{
return "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=" + dataBasePath;
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="conn"></param>
/// <returns></returns>
public static OleDbCommand GetCommand(ref OleDbConnection conn)
......{
return conn.CreateCommand();
}
/**//**//**//// <summary>
/// start transaction and return
/// </summary>
/// <param name="conn"></param>
/// <param name="cmd"></param>
/// <returns></returns>
public static OleDbTransaction StartTrans(ref OleDbConnection conn, ref OleDbCommand cmd)
......{
return cmd.Transaction = conn.BeginTransaction();
}
public static void RollTrans(ref OleDbTransaction trans)
......{
trans.Rollback();
}
public static void CommitTrans(ref OleDbTransaction trans)
......{
trans.Commit();
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="cmd"></param>
/// <param name="query"></param>
/// <param name="param"></param>
public static void ExecuteNonQuery(ref OleDbCommand cmd, string query, params OleDbParameter[] param)
......{
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.Clear();
if (null != param)
cmd.Parameters.AddRange(param);
try
......{
cmd.ExecuteNonQuery();
}
catch (Exception e)
......{
throw new Exception("ExecuteNonQuery:执行数据库操作时出现问题!", e);
}
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="conn"></param>
/// <param name="cmd"></param>
public static void Dispose(ref OleDbConnection conn, ref OleDbCommand cmd)
......{
try
......{
conn.Close();
cmd.Dispose();
conn.Dispose();
}
catch
......{
//throw new Exception("执行数据库对象清除可能有问题!", e);
}
}
/**//**//**//// <summary>
/// GetParameters array
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
public static OleDbParameter[] GetParameters(params object[] arr)
......{
OleDbParameter[] paramArray = new OleDbParameter[arr.Length];
object[] o;
for (int j = 0; j < arr.Length; j++)
......{
o = (object[])arr[j];
paramArray[j] = GetParameter(o);
}
return paramArray;
}
/**//**//**//// <summary>
/// GetParameter
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
public static OleDbParameter GetParameter(params object[] arr)
......{
OleDbParameter param = new OleDbParameter(arr[0].ToString(), arr[1]);
if (arr.Length > 2)
param.OleDbType = (OleDbType)arr[2];
if (arr.Length > 3)
param.Size = Convert.ToInt32(arr[3]);
return param;
}
/**//**//**//// <summary>
/// execute query and return dataset.
/// </summary>
/// <param name="cmd"></param>
/// <param name="query"></param>
/// <param name="param"></param>
/// <returns></returns>
public static OleDbDataReader ExecuteReader(ref OleDbCommand cmd, string query, params OleDbParameter[] param)
......{
OleDbDataReader dr = null;
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.Clear();
if (null != param)
cmd.Parameters.AddRange(param);
try
......{
dr = cmd.ExecuteReader();
}
catch (Exception e)
......{
throw new Exception("ExecuteReader:执行数据库操作时出现问题!", e);
}
return dr;
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="cmd"></param>
/// <param name="query"></param>
/// <param name="param"></param>
/// <returns></returns>
public static object ExecuteScalar(ref OleDbCommand cmd, string query, params OleDbParameter[] param)
......{
object obj = null;
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.Clear();
if (null != param)
cmd.Parameters.AddRange(param);
try
......{
obj = cmd.ExecuteScalar();
}
catch (Exception e)
......{
throw new Exception("ExecuteScalar:执行数据库操作时出现问题!", e);
}
return obj;
}
/**//**//**//// <summary>
/// return a dataset
/// </summary>
/// <param name="cmd"></param>
/// <param name="query"></param>
/// <param name="param"></param>
/// <returns></returns>
public static DataSet ExecuteDataSet(ref OleDbCommand cmd, string query, params OleDbParameter[] param)
......{
OleDbDataAdapter dad = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.Clear();
if (null != param)
cmd.Parameters.AddRange(param);
try
......{
dad.Fill(ds);
}
catch (Exception e)
......{
throw new Exception("ExecuteDataSet:执行数据库操作时出现问题!", e);
}
finally
......{
dad.Dispose();
}
return ds;
}
}
}
附一个使用例子:
int id = int.Parse(GridView1.Rows[e.RowIndex].Cells[0].Text);
string fileClass = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
string fullName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
string imageUrl = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
OleDbConnection conn = OleDbAccess.GetConnection(MasterDBConnectionString);
OleDbCommand cmd = OleDbAccess.GetCommand(ref conn);
string query = "Update [FileClass] Set [FileClass]=@FileClass,[FullName]=@FullName,[ImageUrl]=@ImageUrl Where [Id] = @Id";
OleDbAccess.ExecuteNonQuery(ref cmd, query, OleDbAccess.GetParameters(new object[] ......{ new object[] ......{ "@FileClass", fileClass, OleDbType.VarChar },
new object[] ......{ "@FullName", fullName, OleDbType.VarChar },
new object[] ......{ "@ImageUrl", imageUrl, OleDbType.VarChar },
new object[] ......{ "@Id", id, OleDbType.Integer } }));
OleDbAccess.Dispose(ref conn, ref cmd);
oledb驱动,支持事务处理。引类抛砖引玉,不足之处大师们多多指教。
OleDbAccess.cs原码如下:
/**//*
* @Sban 2006-12
* Access数据库Oldb操作类
*/
using System;
using System.Data;
using System.Data.OleDb;
namespace Sban
......{
public static class OleDbAccess
......{
/**//**//**//// <summary>
/// 取得数据库连接
/// </summary>
/// <param name="connectionString"></param>
/// <returns></returns>
public static OleDbConnection GetConnection(string connectionString)
......{
OleDbConnection conn = new OleDbConnection(connectionString);
try
......{
conn.Open();
}
catch (Exception e)
......{
throw new Exception("数据库连接字符串可能有问题!", e);
}
return conn;
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static string FiltArg(ref string param)
......{
param = System.Web.HttpUtility.HtmlEncode(param);
param = param.Replace("'","‘").Replace(""","“");
return param;
}
/**//**//**//// <summary>
/// 获得oledb连接字符串
/// </summary>
/// <param name="dataBasePath"></param>
/// <returns></returns>
public static string GetConnectionString(string dataBasePath)
......{
return "PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA Source=" + dataBasePath;
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="conn"></param>
/// <returns></returns>
public static OleDbCommand GetCommand(ref OleDbConnection conn)
......{
return conn.CreateCommand();
}
/**//**//**//// <summary>
/// start transaction and return
/// </summary>
/// <param name="conn"></param>
/// <param name="cmd"></param>
/// <returns></returns>
public static OleDbTransaction StartTrans(ref OleDbConnection conn, ref OleDbCommand cmd)
......{
return cmd.Transaction = conn.BeginTransaction();
}
public static void RollTrans(ref OleDbTransaction trans)
......{
trans.Rollback();
}
public static void CommitTrans(ref OleDbTransaction trans)
......{
trans.Commit();
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="cmd"></param>
/// <param name="query"></param>
/// <param name="param"></param>
public static void ExecuteNonQuery(ref OleDbCommand cmd, string query, params OleDbParameter[] param)
......{
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.Clear();
if (null != param)
cmd.Parameters.AddRange(param);
try
......{
cmd.ExecuteNonQuery();
}
catch (Exception e)
......{
throw new Exception("ExecuteNonQuery:执行数据库操作时出现问题!", e);
}
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="conn"></param>
/// <param name="cmd"></param>
public static void Dispose(ref OleDbConnection conn, ref OleDbCommand cmd)
......{
try
......{
conn.Close();
cmd.Dispose();
conn.Dispose();
}
catch
......{
//throw new Exception("执行数据库对象清除可能有问题!", e);
}
}
/**//**//**//// <summary>
/// GetParameters array
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
public static OleDbParameter[] GetParameters(params object[] arr)
......{
OleDbParameter[] paramArray = new OleDbParameter[arr.Length];
object[] o;
for (int j = 0; j < arr.Length; j++)
......{
o = (object[])arr[j];
paramArray[j] = GetParameter(o);
}
return paramArray;
}
/**//**//**//// <summary>
/// GetParameter
/// </summary>
/// <param name="arr"></param>
/// <returns></returns>
public static OleDbParameter GetParameter(params object[] arr)
......{
OleDbParameter param = new OleDbParameter(arr[0].ToString(), arr[1]);
if (arr.Length > 2)
param.OleDbType = (OleDbType)arr[2];
if (arr.Length > 3)
param.Size = Convert.ToInt32(arr[3]);
return param;
}
/**//**//**//// <summary>
/// execute query and return dataset.
/// </summary>
/// <param name="cmd"></param>
/// <param name="query"></param>
/// <param name="param"></param>
/// <returns></returns>
public static OleDbDataReader ExecuteReader(ref OleDbCommand cmd, string query, params OleDbParameter[] param)
......{
OleDbDataReader dr = null;
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.Clear();
if (null != param)
cmd.Parameters.AddRange(param);
try
......{
dr = cmd.ExecuteReader();
}
catch (Exception e)
......{
throw new Exception("ExecuteReader:执行数据库操作时出现问题!", e);
}
return dr;
}
/**//**//**//// <summary>
///
/// </summary>
/// <param name="cmd"></param>
/// <param name="query"></param>
/// <param name="param"></param>
/// <returns></returns>
public static object ExecuteScalar(ref OleDbCommand cmd, string query, params OleDbParameter[] param)
......{
object obj = null;
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.Clear();
if (null != param)
cmd.Parameters.AddRange(param);
try
......{
obj = cmd.ExecuteScalar();
}
catch (Exception e)
......{
throw new Exception("ExecuteScalar:执行数据库操作时出现问题!", e);
}
return obj;
}
/**//**//**//// <summary>
/// return a dataset
/// </summary>
/// <param name="cmd"></param>
/// <param name="query"></param>
/// <param name="param"></param>
/// <returns></returns>
public static DataSet ExecuteDataSet(ref OleDbCommand cmd, string query, params OleDbParameter[] param)
......{
OleDbDataAdapter dad = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
cmd.CommandType = CommandType.Text;
cmd.CommandText = query;
cmd.Parameters.Clear();
if (null != param)
cmd.Parameters.AddRange(param);
try
......{
dad.Fill(ds);
}
catch (Exception e)
......{
throw new Exception("ExecuteDataSet:执行数据库操作时出现问题!", e);
}
finally
......{
dad.Dispose();
}
return ds;
}
}
}
附一个使用例子:
int id = int.Parse(GridView1.Rows[e.RowIndex].Cells[0].Text);
string fileClass = ((TextBox)GridView1.Rows[e.RowIndex].Cells[1].Controls[0]).Text;
string fullName = ((TextBox)GridView1.Rows[e.RowIndex].Cells[2].Controls[0]).Text;
string imageUrl = ((TextBox)GridView1.Rows[e.RowIndex].Cells[3].Controls[0]).Text;
OleDbConnection conn = OleDbAccess.GetConnection(MasterDBConnectionString);
OleDbCommand cmd = OleDbAccess.GetCommand(ref conn);
string query = "Update [FileClass] Set [FileClass]=@FileClass,[FullName]=@FullName,[ImageUrl]=@ImageUrl Where [Id] = @Id";
OleDbAccess.ExecuteNonQuery(ref cmd, query, OleDbAccess.GetParameters(new object[] ......{ new object[] ......{ "@FileClass", fileClass, OleDbType.VarChar },
new object[] ......{ "@FullName", fullName, OleDbType.VarChar },
new object[] ......{ "@ImageUrl", imageUrl, OleDbType.VarChar },
new object[] ......{ "@Id", id, OleDbType.Integer } }));
OleDbAccess.Dispose(ref conn, ref cmd);
相关文章推荐
- 关于c#.Net操作Access数据库的类,支持事务处理
- 关于c#.Net操作Access数据库的类,支持事务处理
- C#.NET执行Oracle DBLink关于“ORA-02041: 客户数据库未开始一个事务处理”
- c#使用Transactions类完成多个数据库的事务操作(分布式事务处理)
- [原创]C#中使用ADO.NET连接SQL Server数据库,自动增长字段用作主键,处理事务时的基本方法
- 关于asp.net c#中对cookie的操作
- C#事务处理(二)之ADO.NET事务
- C# 使用DataSet+dataAdapter操作后台数据库之事务处理方法1,欢迎拍砖
- 利用C#事务处理对数据库进行多重操作
- 关于asp.net c#中对cookie的操作
- 利用C#事务处理对数据库进行多重操作
- 关于asp.net c#中对cookie的操作
- c#.NET 中关于日期时间的格式化处理 (转)
- 关于asp.net c#中对cookie的操作
- C# 操作数据库分布式事务处理
- ASP中对数据库表的操作,可使用事务处理,并支持多事务处理
- 关于asp.net c#中对cookie的操作
- 关于asp.net c#中对cookie的操作
- C#.net事务处理代码
- ADO.NET在C#中关于SQL操作的理解