首页 / C# / ACCESS数据库C#操作类(包含事务)
ACCESS数据库C#操作类(包含事务)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ACCESS数据库C#操作类(包含事务),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含25155字,纯文字阅读大概需要36分钟。
内容图文
转自 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? ?
?
? ? }? ?
}???
原文:http://www.cnblogs.com/liyanwei/p/3962861.html
内容总结
以上是互联网集市为您收集整理的ACCESS数据库C#操作类(包含事务)全部内容,希望文章能够帮你解决ACCESS数据库C#操作类(包含事务)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。