ACCESS数据库C#操作类(包含事务)

转自http://blog.csdn.net/allen3010/article/details/6336717

这个是针对ACCESS数据库操作的类,同样也是从SQLHELPER提取而来,分页程序的调用可以参考MSSQL那个类的调用,差不多的,只是提取所有记录的数量的时候有多一个参数,这个需要注意一下!

c# 代码

using System;? ?
using System.Text;? ?
using System.Collections;? ?
using System.Collections.Specialized;? ?
using System.Data;? ?
using System.Data.OleDb;? ?
using System.Configuration;? ?
?
?
?
namespace NMJU.Web.DBUtility? ?
{? ? /// <summary>? ?
? ? /// 数据访问抽象基础类(ACCESS)? ?
? ? /// Copyright (C) 2006-2007 NMJU.NET? ?
? ? /// All rights reserved? ?
? ? /// </summary>? ?
? ? public abstract class DbHelperACE? ?
? ? {? ?
? ? ? ? //数据库连接字符串(web.config来配置)? ?
? ? ? ? //public static string connectionString = ConfigurationManager.AppSettings["ConnectionString"];? ?
? ? ? ? // public static string connectionString = System.Web.HttpContext.Current.Server.MapPath(ConfigurationManager.AppSettings["AccessConnectionString"]);? ?
? ? ? ? public static string connectionString = ConfigurationManager.AppSettings["AccessConnectionString"];? ?
? ? ? ? public DbHelperACE()? ?
? ? ? ? {? ?
? ? ? ? }?
?
? ? ? ? #region 公用方法? ?
?
? ? ? ? public static int GetMaxID(string FieldName, string TableName)? ?
? ? ? ? {? ?
? ? ? ? ? ? string strsql = "select max(" + FieldName + ")+1 from " + TableName;? ?
? ? ? ? ? ? object obj = DbHelperACE.GetSingle(strsql);? ?
? ? ? ? ? ? if (obj == null)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? return 1;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? return int.Parse(obj.ToString());? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
? ? ? ? public static bool Exists(string strSql)? ?
? ? ? ? {? ?
? ? ? ? ? ? object obj = DbHelperACE.GetSingle(strSql);? ?
? ? ? ? ? ? int cmdresult;? ?
? ? ? ? ? ? if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? cmdresult = 0;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? cmdresult = int.Parse(obj.ToString());? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? if (cmdresult == 0)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? return false;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? return true;? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
? ? ? ? public static bool Exists(string strSql, params OleDbParameter[] cmdParms)? ?
? ? ? ? {? ?
? ? ? ? ? ? object obj = DbHelperACE.GetSingle(strSql, cmdParms);? ?
? ? ? ? ? ? int cmdresult;? ?
? ? ? ? ? ? if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? cmdresult = 0;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? cmdresult = int.Parse(obj.ToString());? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? if (cmdresult == 0)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? return false;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? return true;? ?
? ? ? ? ? ? }? ?
? ? ? ? }?
? ? ? ? #endregion?
?
? ? ? ? #region? 执行简单SQL语句? ?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行SQL语句,返回影响的记录数? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLString">SQL语句</param>? ?
? ? ? ? /// <returns>影响的记录数</returns>? ?
? ? ? ? public static int ExecuteSql(string SQLString)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? connection.Open();? ?
? ? ? ? ? ? ? ? ? ? ? ? int rows = cmd.ExecuteNonQuery();? ?
? ? ? ? ? ? ? ? ? ? ? ? return rows;? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException E)? ?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? connection.Close();? ?
? ? ? ? ? ? ? ? ? ? ? ? throw new Exception(E.Message);? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行SQL语句,设置命令的执行等待时间? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLString"></param>? ?
? ? ? ? /// <param name="Times"></param>? ?
? ? ? ? /// <returns></returns>? ?
? ? ? ? public static int ExecuteSqlByTime(string SQLString, int Times)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? connection.Open();? ?
? ? ? ? ? ? ? ? ? ? ? ? cmd.CommandTimeout = Times;? ?
? ? ? ? ? ? ? ? ? ? ? ? int rows = cmd.ExecuteNonQuery();? ?
? ? ? ? ? ? ? ? ? ? ? ? return rows;? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException E)? ?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? connection.Close();? ?
? ? ? ? ? ? ? ? ? ? ? ? throw new Exception(E.Message);? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行多条SQL语句,实现数据库事务。? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLStringList">多条SQL语句</param>? ? ? ?
? ? ? ? public static void ExecuteSqlTran(ArrayList SQLStringList)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection conn = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? conn.Open();? ?
? ? ? ? ? ? ? ? OleDbCommand cmd = new OleDbCommand();? ?
? ? ? ? ? ? ? ? cmd.Connection = conn;? ?
? ? ? ? ? ? ? ? OleDbTransaction tx = conn.BeginTransaction();? ?
? ? ? ? ? ? ? ? cmd.Transaction = tx;? ?
? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? for (int n = 0; n < SQLStringList.Count; n++)? ?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? string strsql = SQLStringList[n].ToString();? ?
? ? ? ? ? ? ? ? ? ? ? ? if (strsql.Trim().Length > 1)? ?
? ? ? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? cmd.CommandText = strsql;? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? cmd.ExecuteNonQuery();? ?
? ? ? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? tx.Commit();? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException E)? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? tx.Rollback();? ?
? ? ? ? ? ? ? ? ? ? throw new Exception(E.Message);? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 向数据库里插入图像格式的字段(和上面情况类似的另一种实例)? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="strSQL">SQL语句</param>? ?
? ? ? ? /// <param name="fs">图像字节,数据库的字段类型为image的情况</param>? ?
? ? ? ? /// <returns>影响的记录数</returns>? ?
? ? ? ? public static int ExecuteSqlInsertImg(string strSQL, byte[] fs)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? OleDbCommand cmd = new OleDbCommand(strSQL, connection);? ?
? ? ? ? ? ? ? ? System.Data.OleDb.OleDbParameter myParameter = new System.Data.OleDb.OleDbParameter("@fs", SqlDbType.Image);? ?
? ? ? ? ? ? ? ? myParameter.Value = fs;? ?
? ? ? ? ? ? ? ? cmd.Parameters.Add(myParameter);? ?
? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? connection.Open();? ?
? ? ? ? ? ? ? ? ? ? int rows = cmd.ExecuteNonQuery();? ?
? ? ? ? ? ? ? ? ? ? return rows;? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException E)? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? throw new Exception(E.Message);? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? finally?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? cmd.Dispose();? ?
? ? ? ? ? ? ? ? ? ? connection.Close();? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行一条计算查询结果语句,返回查询结果(object)。? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLString">计算查询结果语句</param>? ?
? ? ? ? /// <returns>查询结果(object)</returns>? ?
? ? ? ? public static object GetSingle(string SQLString)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? using (OleDbCommand cmd = new OleDbCommand(SQLString, connection))? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? connection.Open();? ?
? ? ? ? ? ? ? ? ? ? ? ? object obj = cmd.ExecuteScalar();? ?
? ? ? ? ? ? ? ? ? ? ? ? if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))? ?
? ? ? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? return null;? ?
? ? ? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? ? ? else?
? ? ? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? return obj;? ?
? ? ? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException e)? ?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? connection.Close();? ?
? ? ? ? ? ? ? ? ? ? ? ? throw new Exception(e.Message);? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行查询语句,返回SqlDataReader(使用该方法切记要手工关闭SqlDataReader和连接)? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="strSQL">查询语句</param>? ?
? ? ? ? /// <returns>SqlDataReader</returns>? ?
? ? ? ? public static OleDbDataReader ExecuteReader(string strSQL)? ?
? ? ? ? {? ?
? ? ? ? ? ? OleDbConnection connection = new OleDbConnection(connectionString);? ?
? ? ? ? ? ? OleDbCommand cmd = new OleDbCommand(strSQL, connection);? ?
? ? ? ? ? ? try?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? connection.Open();? ?
? ? ? ? ? ? ? ? OleDbDataReader myReader = cmd.ExecuteReader();? ?
? ? ? ? ? ? ? ? return myReader;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? catch (System.Data.OleDb.OleDbException e)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? throw new Exception(e.Message);? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? //finally //不能在此关闭,否则,返回的对象将无法使用? ?
? ? ? ? ? ? //{? ?
? ? ? ? ? ? //? cmd.Dispose();? ?
? ? ? ? ? ? //? connection.Close();? ?
? ? ? ? ? ? //}? ?
?
?
? ? ? ? }? ?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行查询语句,返回DataSet? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLString">查询语句</param>? ?
? ? ? ? /// <returns>DataSet</returns>? ?
? ? ? ? public static DataSet Query(string SQLString)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? DataSet ds = new DataSet();? ?
? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? connection.Open();? ?
? ? ? ? ? ? ? ? ? ? OleDbDataAdapter command = new OleDbDataAdapter(SQLString, connection);? ?
? ? ? ? ? ? ? ? ? ? command.Fill(ds, "ds");? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException ex)? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? throw new Exception(ex.Message);? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? return ds;? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行查询语句,返回DataSet,设置命令的执行等待时间? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLString"></param>? ?
? ? ? ? /// <param name="Times"></param>? ?
? ? ? ? /// <returns></returns>? ?
? ? ? ? public static DataSet Query(string SQLString, int Times)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? DataSet ds = new DataSet();? ?
? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? connection.Open();? ?
? ? ? ? ? ? ? ? ? ? OleDbDataAdapter command = new OleDbDataAdapter(SQLString, connection);? ?
? ? ? ? ? ? ? ? ? ? command.SelectCommand.CommandTimeout = Times;? ?
? ? ? ? ? ? ? ? ? ? command.Fill(ds, "ds");? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException ex)? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? throw new Exception(ex.Message);? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? return ds;? ?
? ? ? ? ? ? }? ?
? ? ? ? }?
?
?
?
? ? ? ? #endregion?
?
? ? ? ? #region 执行带参数的SQL语句? ?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行SQL语句,返回影响的记录数? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLString">SQL语句</param>? ?
? ? ? ? /// <returns>影响的记录数</returns>? ?
? ? ? ? public static int ExecuteSql(string SQLString, params OleDbParameter[] cmdParms)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? using (OleDbCommand cmd = new OleDbCommand())? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? PrepareCommand(cmd, connection, null, SQLString, cmdParms);? ?
? ? ? ? ? ? ? ? ? ? ? ? int rows = cmd.ExecuteNonQuery();? ?
? ? ? ? ? ? ? ? ? ? ? ? cmd.Parameters.Clear();? ?
? ? ? ? ? ? ? ? ? ? ? ? return rows;? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException E)? ?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? throw new Exception(E.Message);? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行多条SQL语句,实现数据库事务。? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLStringList">SQL语句的哈希表(key为sql语句,value是该语句的OleDbParameter[])</param>? ?
? ? ? ? public static void ExecuteSqlTran(Hashtable SQLStringList)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection conn = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? conn.Open();? ?
? ? ? ? ? ? ? ? using (OleDbTransaction trans = conn.BeginTransaction())? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? OleDbCommand cmd = new OleDbCommand();? ?
? ? ? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? //循环? ?
? ? ? ? ? ? ? ? ? ? ? ? foreach (DictionaryEntry myDE in SQLStringList)? ?
? ? ? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? string cmdText = myDE.Key.ToString();? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? OleDbParameter[] cmdParms = (OleDbParameter[])myDE.Value;? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? PrepareCommand(cmd, conn, trans, cmdText, cmdParms);? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? int val = cmd.ExecuteNonQuery();? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? cmd.Parameters.Clear();? ?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? trans.Commit();? ?
? ? ? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? catch?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? trans.Rollback();? ?
? ? ? ? ? ? ? ? ? ? ? ? throw;? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行一条计算查询结果语句,返回查询结果(object)。? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLString">计算查询结果语句</param>? ?
? ? ? ? /// <returns>查询结果(object)</returns>? ?
? ? ? ? public static object GetSingle(string SQLString, params OleDbParameter[] cmdParms)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? using (OleDbCommand cmd = new OleDbCommand())? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? PrepareCommand(cmd, connection, null, SQLString, cmdParms);? ?
? ? ? ? ? ? ? ? ? ? ? ? object obj = cmd.ExecuteScalar();? ?
? ? ? ? ? ? ? ? ? ? ? ? cmd.Parameters.Clear();? ?
? ? ? ? ? ? ? ? ? ? ? ? if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))? ?
? ? ? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? return null;? ?
? ? ? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? ? ? else?
? ? ? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? return obj;? ?
? ? ? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException e)? ?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? throw new Exception(e.Message);? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行查询语句,返回SqlDataReader (使用该方法切记要手工关闭SqlDataReader和连接)? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="strSQL">查询语句</param>? ?
? ? ? ? /// <returns>SqlDataReader</returns>? ?
? ? ? ? public static OleDbDataReader ExecuteReader(string SQLString, params OleDbParameter[] cmdParms)? ?
? ? ? ? {? ?
? ? ? ? ? ? OleDbConnection connection = new OleDbConnection(connectionString);? ?
? ? ? ? ? ? OleDbCommand cmd = new OleDbCommand();? ?
? ? ? ? ? ? try?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? PrepareCommand(cmd, connection, null, SQLString, cmdParms);? ?
? ? ? ? ? ? ? ? OleDbDataReader myReader = cmd.ExecuteReader();? ?
? ? ? ? ? ? ? ? cmd.Parameters.Clear();? ?
? ? ? ? ? ? ? ? return myReader;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? catch (System.Data.OleDb.OleDbException e)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? throw new Exception(e.Message);? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? //finally //不能在此关闭,否则,返回的对象将无法使用? ?
? ? ? ? ? ? //{? ?
? ? ? ? ? ? //? cmd.Dispose();? ?
? ? ? ? ? ? //? connection.Close();? ?
? ? ? ? ? ? //}? ?
?
? ? ? ? }? ?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 执行查询语句,返回DataSet? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="SQLString">查询语句</param>? ?
? ? ? ? /// <returns>DataSet</returns>? ?
? ? ? ? public static DataSet Query(string SQLString, params OleDbParameter[] cmdParms)? ?
? ? ? ? {? ?
? ? ? ? ? ? using (OleDbConnection connection = new OleDbConnection(connectionString))? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? OleDbCommand cmd = new OleDbCommand();? ?
? ? ? ? ? ? ? ? PrepareCommand(cmd, connection, null, SQLString, cmdParms);? ?
? ? ? ? ? ? ? ? using (OleDbDataAdapter da = new OleDbDataAdapter(cmd))? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? DataSet ds = new DataSet();? ?
? ? ? ? ? ? ? ? ? ? try?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? da.Fill(ds, "ds");? ?
? ? ? ? ? ? ? ? ? ? ? ? cmd.Parameters.Clear();? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? catch (System.Data.OleDb.OleDbException ex)? ?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? throw new Exception(ex.Message);? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? return ds;? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }? ?
?
?
? ? ? ? private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, string cmdText, OleDbParameter[] cmdParms)? ?
? ? ? ? {? ?
? ? ? ? ? ? if (conn.State != ConnectionState.Open)? ?
? ? ? ? ? ? ? ? conn.Open();? ?
? ? ? ? ? ? cmd.Connection = conn;? ?
? ? ? ? ? ? cmd.CommandText = cmdText;? ?
? ? ? ? ? ? if (trans != null)? ?
? ? ? ? ? ? ? ? cmd.Transaction = trans;? ?
? ? ? ? ? ? cmd.CommandType = CommandType.Text;//cmdType;? ?
? ? ? ? ? ? if (cmdParms != null)? ?
? ? ? ? ? ? {? ?
?
?
? ? ? ? ? ? ? ? foreach (OleDbParameter parameter in cmdParms)? ?
? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&? ?
? ? ? ? ? ? ? ? ? ? ? ? (parameter.Value == null))? ?
? ? ? ? ? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? ? ? ? ? parameter.Value = DBNull.Value;? ?
? ? ? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? ? ? ? ? cmd.Parameters.Add(parameter);? ?
? ? ? ? ? ? ? ? }? ?
? ? ? ? ? ? }? ?
? ? ? ? }?
?
? ? ? ? #endregion?
?
? ? ? ? #region 获取根据指定字段排序并分页查询。? ?
?
?
? ? ? ? /**/?
? ? ? ? /// <summary>? ?
? ? ? ? /// 分页查询数据记录总数获取? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="_tbName">----要显示的表或多个表的连接</param>? ?
? ? ? ? /// <param name="_ID">----主表的主键</param>? ?
? ? ? ? /// <param name="_strCondition">----查询条件,不需where</param>? ? ? ? ? ?
? ? ? ? /// <param name="_Dist">----是否添加查询字段的 DISTINCT 默认0不添加/1添加</param>? ?
? ? ? ? /// <returns></returns>? ?
? ? ? ? public static string getPageListCounts(string _ID, string _tbName, string _strCondition, int _Dist)? ?
? ? ? ? {? ?
? ? ? ? ? ? //---存放取得查询结果总数的查询语句? ? ? ? ? ? ? ? ? ? ? ?
? ? ? ? ? ? //---对含有DISTINCT的查询进行SQL构造? ?
? ? ? ? ? ? //---对含有DISTINCT的总数查询进行SQL构造? ?
? ? ? ? ? ? string strTmp = "", SqlSelect = "", SqlCounts = "";? ?
?
? ? ? ? ? ? if (_Dist == 0)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? SqlSelect = "Select ";? ?
? ? ? ? ? ? ? ? SqlCounts = "COUNT(*)";? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? SqlSelect = "Select DISTINCT ";? ?
? ? ? ? ? ? ? ? SqlCounts = "COUNT(DISTINCT " + _ID + ")";? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? if (_strCondition == string.Empty)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? strTmp = SqlSelect + " "+ SqlCounts + " FROM " + _tbName;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? strTmp = SqlSelect + " "+ SqlCounts + " FROM " + " Where (1=1) " + _strCondition;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? return strTmp;? ?
? ? ? ? }? ?
?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 智能返回SQL语句? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="primaryKey">主键(不能为空)</param>? ?
? ? ? ? /// <param name="queryFields">提取字段(不能为空)</param>? ?
? ? ? ? /// <param name="tableName">表(理论上允许多表)</param>? ?
? ? ? ? /// <param name="condition">条件(可以空)</param>? ?
? ? ? ? /// <param name="OrderBy">排序,格式:字段名+""+ASC(可以空)</param>? ?
? ? ? ? /// <param name="pageSize">分页数(不能为空)</param>? ?
? ? ? ? /// <param name="pageIndex">当前页,起始为:1(不能为空)</param>? ?
? ? ? ? /// <returns></returns>? ?
?
? ? ? ? public static string getPageListSql(string primaryKey, string queryFields, string tableName, string condition, string orderBy, int pageSize, int pageIndex)? ?
? ? ? ? {? ?
? ? ? ? ? ? string strTmp = ""; //---strTmp用于返回的SQL语句? ?
? ? ? ? ? ? string SqlSelect = "", SqlPrimaryKeySelect = "", strOrderBy = "", strWhere = " where 1=1 ", strTop = "";? ?
? ? ? ? ? ? //0:分页数量? ?
? ? ? ? ? ? //1:提取字段? ?
? ? ? ? ? ? //2:表? ?
? ? ? ? ? ? //3:条件? ?
? ? ? ? ? ? //4:主键不存在的记录? ?
? ? ? ? ? ? //5:排序? ?
? ? ? ? ? ? SqlSelect = " select top {0} {1} from {2} {3} {4} {5}";? ?
? ? ? ? ? ? //0:主键? ?
? ? ? ? ? ? //1:TOP数量,为分页数*(排序号-1)? ?
? ? ? ? ? ? //2:表? ?
? ? ? ? ? ? //3:条件? ?
? ? ? ? ? ? //4:排序? ?
? ? ? ? ? ? SqlPrimaryKeySelect = " and {0} not in (select {1} {0} from {2} {3} {4}) ";? ?
?
? ? ? ? ? ? if (orderBy != "")? ?
? ? ? ? ? ? ? ? strOrderBy = " order by " + orderBy;? ?
? ? ? ? ? ? if (condition != "")? ?
? ? ? ? ? ? ? ? strWhere += " and " + condition;? ?
? ? ? ? ? ? int pageindexsize = (pageIndex - 1) * pageSize;? ?
? ? ? ? ? ? if (pageindexsize > 0)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? strTop = " top " + pageindexsize.ToString();? ?
?
? ? ? ? ? ? ? ? SqlPrimaryKeySelect = String.Format(SqlPrimaryKeySelect, primaryKey, strTop, tableName, strWhere, strOrderBy);? ?
?
? ? ? ? ? ? ? ? strTmp = String.Format(SqlSelect, pageSize.ToString(), queryFields, tableName, strWhere, SqlPrimaryKeySelect, strOrderBy);? ?
?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? strTmp = String.Format(SqlSelect, pageSize.ToString(), queryFields, tableName, strWhere, "", strOrderBy);? ?
?
? ? ? ? ? ? }? ?
? ? ? ? ? ? return strTmp;? ?
? ? ? ? }? ?
?
?
? ? ? ? /// <summary>? ?
? ? ? ? /// 获取根据指定字段排序并分页查询。DataSet? ?
? ? ? ? /// </summary>? ?
? ? ? ? /// <param name="pageSize">每页要显示的记录的数目</param>? ?
? ? ? ? /// <param name="pageIndex">要显示的页的索引</param>? ?
? ? ? ? /// <param name="tableName">要查询的数据表</param>? ?
? ? ? ? /// <param name="queryFields">要查询的字段,如果是全部字段请填写:*</param>? ?
? ? ? ? /// <param name="primaryKey">主键字段,类似排序用到</param>? ?
? ? ? ? /// <param name="orderBy">是否为升序排列:0为升序,1为降序</param>? ?
? ? ? ? /// <param name="condition">查询的筛选条件</param>? ?
? ? ? ? /// <returns>返回排序并分页查询的DataSet</returns>? ?
? ? ? ? public static DataSet GetPagingList(string primaryKey, string queryFields, string tableName, string condition, string orderBy, int pageSize, int pageIndex)? ?
? ? ? ? {? ?
? ? ? ? ? ? string sql = getPageListSql(primaryKey, queryFields, tableName, condition, orderBy, pageSize, pageIndex);? ?
?
? ? ? ? ? ? return Query(sql);? ?
? ? ? ? }? ?
? ? ? ? public static string GetPagingListSQL(string primaryKey, string queryFields, string tableName, string condition, string orderBy, int pageSize, int pageIndex)? ?
? ? ? ? {? ?
? ? ? ? ? ? string sql = getPageListSql(primaryKey, queryFields, tableName, condition, orderBy, pageSize, pageIndex);? ?
?
? ? ? ? ? ? return sql;? ?
? ? ? ? }? ?
? ? ? ? public static int GetRecordCount(string _ID, string _tbName, string _strCondition, int _Dist)? ?
? ? ? ? {? ?
? ? ? ? ? ? string sql = getPageListCounts( _ID,? _tbName,? _strCondition,? _Dist);? ?
?
? ? ? ? ? ? object obj = DbHelperACE.GetSingle(sql);? ?
? ? ? ? ? ? if (obj == null)? ?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? return 1;? ?
? ? ? ? ? ? }? ?
? ? ? ? ? ? else?
? ? ? ? ? ? {? ?
? ? ? ? ? ? ? ? return int.Parse(obj.ToString());? ?
? ? ? ? ? ? }? ?
? ? ? ? }?
? ? ? ? #endregion? ?
?
? ? }? ?
}???

时间: 2024-08-23 22:58:48

ACCESS数据库C#操作类(包含事务)的相关文章

记录Access数据库更新操作大坑一个

对于更新Access数据库的操作,必须保持参数数组与sql语句中参数顺序一致,如下: 1 public bool Update(MyModel model) 2 { 3 StringBuilder strSql = new StringBuilder(); 4 strSql.Append("update table1 set "); 5 strSql.Append(" column1 = @column1 , "); 6 strSql.Append(" c

VC++对Access数据库的操作(查询、插入、更新、删除等)

Microsoft Office Access是由微软发布的关系数据库管理系统.Access数据库常应用于小型软件系统中,比如:生产管理.销售管理.库存管理等各类企业管理软件,其最大的优点是:简单易学.使用灵活. 下面我们结合实例来详细说明,在VC++ MFC中,如何使用Access数据库文件进行数据的存储,如何实现对数据库中数据的查询.插入.更新和删除等操作. (实例可在我的CSDN资源中下载:http://download.csdn.net/detail/margin1988/8235865

C#中ACCESS数据库常用操作语句...容易出错的地方

这次在C#编程过程中,第一次用到了ACCESS数据库,重点涉及到时间类型,整数类型.是否类型....;遇到了许多困难,就把这些整理了下来,与大家分享. 一.Insert语句的基本格式: INSERT INTO Tablename[(column1name,[column2name, ...])]VALUES (value1, [value2, ...]) 1.表的字段名称可能是数据库的保留字,这时需把这个字段名称用"[]"括起来, 保留字的情况:   INSERT INTO Emplo

Win7下NodeJs框架Express使用以及数据库公共操作类整理

具体步骤: 1.安装开发工具WebStorm: 2.安装node/npm(下载地址:https://nodejs.org/download/)选择适合你的xxx.mis安装: 3.安装express框架(cmd窗口模式,用npm命令执行:npm install express): 4.创建nodeJsExpress项目,使用ejs模板: 5.下载node-mssql连接数据库驱动(进入指定的目录用npm命令执行:npm install node-mssql): 6.拷贝node-mssql文件夹

C#---数据库访问通用类、Access数据库操作类、mysql类 .[转]

原文链接 //C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration; namespace XXX{    /// <summary>    /// 针对SQL Server数据库操作的通用类           /// </sum

C#---数据库访问通用类、Access数据库操作类、mysql类 .

//C# 数据库访问通用类 (ADO.NET)using System;using System.Collections.Generic;using System.Text;using System.Data;using System.Data.SqlClient;using System.Configuration; namespace XXX{    /// <summary>    /// 针对SQL Server数据库操作的通用类           /// </summary&

一个数据库操作类,适用于Oracle,ACCESS,SQLSERVER

最近做了一个数据诊断的项目,里面自己写了一个数据库的操作类,包含:连接数据库.读数据表.执行SQL操作,释放数据库等组成,希望对大家有用,由于水平有限,若有错误或者代码不足地方欢迎指正,谢谢. ADOOperate.H [cpp] view plaincopy ////////////////////////////////////////////////////////////////////// // 类功能:用于数据库的操作 主要实现 连接数据库 读数据表 检查数据表 执行SQL语句 //

C#.net数据库访问及其操作类

using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Data; using System.Data.SqlClient; using System.Configuration; using System.Text; using System.Text.RegularExpressions; using System.Security; /// <summ

自己封装的ASP.NET的MYSQL的数据库操作类

/** * 作者:牛腩 * 创建时间:2010年3月7日17时35分 * 类说明:对MYSQL数据库的操作类 */ using System; using System.Data; using MySql.Data.MySqlClient; namespace Niunan.BYLW.Utility { /// <summary>对MYSQL数据库的操作类 /// /// </summary> public class MYSQLHelper { private MySqlConn