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

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

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);
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值