using System; using System.Data.OleDb; using System.Data; using System.Diagnostics; using System.Collections.Generic; namespace Common { /// <summary> /// Description of DBUtil. /// </summary> public class AccessDBUtil { private static String connectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=access.mdb;Persist Security Info=False"; public AccessDBUtil() { } public static string msgsend,msgsend2; //执行单条插入语句,并返回id,不需要返回id的用ExceuteNonQuery执行。Microsoft.Jet.OLEDB.4.0 public int ExecuteInsert(string sql,OleDbParameter[] parameters) { //Debug.WriteLine(sql); using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand cmd = new OleDbCommand(sql, connection); try { connection.Open(); if(parameters!=null) cmd.Parameters.AddRange(parameters); cmd.ExecuteNonQuery(); cmd.CommandText = @"select @@identity"; int value = Int32.Parse(cmd.ExecuteScalar().ToString()); return value; } catch (Exception e) { throw e; } } } public int ExecuteInsert(string sql) { return ExecuteInsert(sql,null); } //执行带参数的sql语句,返回影响的记录数(insert,update,delete) public int ExecuteNonQuery(string sql,OleDbParameter[] parameters) { //Debug.WriteLine(sql); using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand cmd = new OleDbCommand(sql, connection); try { connection.Open(); if(parameters!=null) cmd.Parameters.AddRange(parameters); int rows = cmd.ExecuteNonQuery(); return rows; } catch (Exception e) { throw e; } } } //执行不带参数的sql语句,返回影响的记录数 //不建议使用拼出来SQL public int ExecuteNonQuery(string sql) { return ExecuteNonQuery(sql,null); } //执行单条语句返回第一行第一列,可以用来返回count(*) public int ExecuteScalar(string sql,OleDbParameter[] parameters) { //Debug.WriteLine(sql); using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand cmd = new OleDbCommand(sql, connection); try { connection.Open(); if(parameters!=null) cmd.Parameters.AddRange(parameters); int value = Int32.Parse(cmd.ExecuteScalar().ToString()); return value; } catch (Exception e) { throw e; } } } public string ExecuteScalar_str(string sql) { using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand cmd = new OleDbCommand(sql, connection); try { connection.Open(); string value = cmd.ExecuteScalar().ToString(); return value; } catch (Exception e) { throw e; } } } public int ExecuteScalar(string sql) { return ExecuteScalar(sql,null); } //执行事务 public void ExecuteTrans(List<string> sqlList,List<OleDbParameter[]> paraList) { //Debug.WriteLine(sql); using (OleDbConnection connection = new OleDbConnection(connectionString)) { OleDbCommand cmd = new OleDbCommand(); OleDbTransaction transaction = null; cmd.Connection = connection; try { connection.Open(); transaction = connection.BeginTransaction(); cmd.Transaction = transaction; for(int i=0;i<sqlList.Count;i++) { cmd.CommandText=sqlList[i]; if(paraList!=null&¶List[i]!=null) { cmd.Parameters.Clear(); cmd.Parameters.AddRange(paraList[i]); } cmd.ExecuteNonQuery(); } transaction.Commit(); } catch (Exception e) { try { transaction.Rollback(); } catch { } throw e; } } } public void ExecuteTrans(List<string> sqlList) { ExecuteTrans(sqlList,null); } //执行查询语句,返回dataset public DataSet ExecuteQuery(string sql,OleDbParameter[] parameters) { //Debug.WriteLine(sql); using (OleDbConnection connection = new OleDbConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); OleDbDataAdapter da = new OleDbDataAdapter(sql, connection); if(parameters!=null) da.SelectCommand.Parameters.AddRange(parameters); da.Fill(ds,"ds"); } catch (Exception ex) { throw ex; } return ds; } } public DataSet ExecuteQuery(string sql) { return ExecuteQuery(sql,null); } public DataTable ExecuteDatatable(string sql) { using (OleDbConnection connection = new OleDbConnection(connectionString)) { DataSet ds = new DataSet(); try { connection.Open(); OleDbDataAdapter da = new OleDbDataAdapter(sql, connection); DataTable dt = new DataTable("table"); ds.Tables.Add(dt); da.Fill(ds, "table"); return dt; } catch (Exception ex) { throw ex; } } } //执行查询语句返回datareader,使用后要注意close //这个函数在AccessPageUtils中使用,执行其它查询时最好不要用 public OleDbDataReader ExecuteReader(string sql) { //Debug.WriteLine(sql); OleDbConnection connection = new OleDbConnection(connectionString); OleDbCommand cmd = new OleDbCommand(sql, connection); try { connection.Open(); return cmd.ExecuteReader(CommandBehavior.CloseConnection); } catch (Exception e) { connection.Close(); throw e; } } } }