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
语句的哈希表(keysql语句,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? ?
?
? ? }? ?
}???

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。