为提高程序效率计,类中所有方法均为静态方法。
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);