实用类-操作Access数据库OLEHelper
时间:2010-10-09 来源:sheme
using System;
using System.Data;
using System.Data.OleDb;
namespace Autumn.Data
{
/// <summary>
/// Written: [China] Zhao Zhe
/// Modify : [China] 饶绍泉
/// Date: Sep. 2004
/// Modify : 2008.09
/// Version 1.0
/// Support MyBask
/// Looking for the latest version or similar implentation of this function, please visit:<see cref="http://www.mybask.net"/>
///
/// Purpose:
/// To make connection to access easier.a Access version of SqlHelper.
/// Describe:
/// - Add several overload functions, which made it easy to use.
/// - only for DataReader
///
/// </summary>
public abstract class OLEHelper
{
public OLEHelper()
{
}
/// <summary>
/// 执行一段SQL语句,只有三个最简的必要参数,省去了CommandType
/// To excute a SQL statement, which reuturns a integer stand for effect line number.
/// default Command type is text
/// </summary>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>返回影响行数 (effect line number)</returns>
public static int ExecuteNonQuery(string connString, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection conn = new OleDbConnection(connString))
{
PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 执行一段SQL语句
/// To excute a SQL statement, which reuturns a integer stand for effect line number.
/// </summary>
/// <param name="connString">连接字符串 (Connection String)</param>
/// <param name="cmdType">CommandType (Command type)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>返回影响行数 (effect line number)</returns>
public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection conn = new OleDbConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 执行一段SQL语句
/// To excute a SQL statement, which reuturns a integer stand for effect line number.
/// a connection is passed in instead of a connection string
/// </summary>
/// <param name="conn">已初始化的 OleDbConnection (a Conncection)</param>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>返回影响行数 (effect line number)</returns>
public static int ExecuteNonQuery(OleDbConnection conn, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
/// <summary>
/// 执行一段SQL语句,需要传入一个事务Transaction.
/// To excute a SQL statement, which reuturns a integer stand for effect line number.
/// a transaction is reqired
/// </summary>
/// <param name="trans">一个Trasaction (Trasaction)</param>
/// <param name="cmdType">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdText">CommandType (Command type)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>返回影响行数 (effect line number)</returns>
public static int ExecuteNonQuery(OleDbTransaction trans, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
/// <summary>
/// 执行一段查询语句返回DataReader,省略了CommandType参数
/// To excute a SQL statement, and reuturns a dataReader.
/// default command type is text
/// </summary>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL 语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>DataReader</returns>
public static OleDbDataReader ExecuteReader(string connString, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
OleDbConnection conn = new OleDbConnection(connString);
// we use a try/catch here because if the method throws an exception we want to
// close the connection throw code, because no datareader will exist, hence the
// commandBehaviour.CloseConnection will not work
try
{
PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
// cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 执行一段查询语句返回DataReader
/// To excute a SQL statement, and reuturns a dataReader.
/// </summary>
/// <param name="connString">连接字符串 (Connection String)</param>
/// <param name="cmdType">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdText">CommandType (Command type)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>DataReader</returns>
public static OleDbDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
OleDbConnection conn = new OleDbConnection(connString);
// we use a try/catch here because if the method throws an exception we want to
// close the connection throw code, because no datareader will exist, hence the
// commandBehaviour.CloseConnection will not work
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
// cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 用于读取一个值,查询所返回的是结果集中第一行的第一列,省去了CommandType
/// To excute a SQL statement, and returns the first column of the first line
/// Default command type is text
/// </summary>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>结果集中第一行的第一列</returns>
public static object ExecuteScalar(string connString, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection conn = new OleDbConnection(connString))
{
PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 用于读取一个值,查询所返回的是结果集中第一行的第一列
/// To excute a SQL statement, and returns the first column of the first line
/// </summary>
/// <param name="connString">连接字符串 (Connection String)</param>
/// <param name="cmdType">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdText">CommandType (Command type)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>结果集中第一行的第一列</returns>
public static object ExecuteScalar(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection conn = new OleDbConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 用于读取一个值,查询所返回的是结果集中第一行的第一列
/// To excute a SQL statement, and returns the first column of the first line
/// a connection is passed in instead of a connection string
/// </summary>
/// <param name="conn">已初始化的OleDbConnection (a Conncection)</param>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>结果集中第一行的第一列</returns>
public static object ExecuteScalar(OleDbConnection conn, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
/// <summary>
/// 在执行SQL语句之前的准备工作
/// </summary>
/// <param name="cmd">Command</param>
/// <param name="conn">Connection</param>
/// <param name="trans">Trasaction</param>
/// <param name="cmdType">CommandType</param>
/// <param name="cmdText">CommandText</param>
/// <param name="cmdParms">参数列表</param>
private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, CommandType cmdType, 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 = cmdType;
if (cmdParms != null)
{
foreach (OleDbParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
}
}
using System.Data;
using System.Data.OleDb;
namespace Autumn.Data
{
/// <summary>
/// Written: [China] Zhao Zhe
/// Modify : [China] 饶绍泉
/// Date: Sep. 2004
/// Modify : 2008.09
/// Version 1.0
/// Support MyBask
/// Looking for the latest version or similar implentation of this function, please visit:<see cref="http://www.mybask.net"/>
///
/// Purpose:
/// To make connection to access easier.a Access version of SqlHelper.
/// Describe:
/// - Add several overload functions, which made it easy to use.
/// - only for DataReader
///
/// </summary>
public abstract class OLEHelper
{
public OLEHelper()
{
}
/// <summary>
/// 执行一段SQL语句,只有三个最简的必要参数,省去了CommandType
/// To excute a SQL statement, which reuturns a integer stand for effect line number.
/// default Command type is text
/// </summary>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>返回影响行数 (effect line number)</returns>
public static int ExecuteNonQuery(string connString, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection conn = new OleDbConnection(connString))
{
PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 执行一段SQL语句
/// To excute a SQL statement, which reuturns a integer stand for effect line number.
/// </summary>
/// <param name="connString">连接字符串 (Connection String)</param>
/// <param name="cmdType">CommandType (Command type)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>返回影响行数 (effect line number)</returns>
public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection conn = new OleDbConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 执行一段SQL语句
/// To excute a SQL statement, which reuturns a integer stand for effect line number.
/// a connection is passed in instead of a connection string
/// </summary>
/// <param name="conn">已初始化的 OleDbConnection (a Conncection)</param>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>返回影响行数 (effect line number)</returns>
public static int ExecuteNonQuery(OleDbConnection conn, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
/// <summary>
/// 执行一段SQL语句,需要传入一个事务Transaction.
/// To excute a SQL statement, which reuturns a integer stand for effect line number.
/// a transaction is reqired
/// </summary>
/// <param name="trans">一个Trasaction (Trasaction)</param>
/// <param name="cmdType">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdText">CommandType (Command type)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>返回影响行数 (effect line number)</returns>
public static int ExecuteNonQuery(OleDbTransaction trans, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
int val = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return val;
}
/// <summary>
/// 执行一段查询语句返回DataReader,省略了CommandType参数
/// To excute a SQL statement, and reuturns a dataReader.
/// default command type is text
/// </summary>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL 语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>DataReader</returns>
public static OleDbDataReader ExecuteReader(string connString, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
OleDbConnection conn = new OleDbConnection(connString);
// we use a try/catch here because if the method throws an exception we want to
// close the connection throw code, because no datareader will exist, hence the
// commandBehaviour.CloseConnection will not work
try
{
PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
// cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 执行一段查询语句返回DataReader
/// To excute a SQL statement, and reuturns a dataReader.
/// </summary>
/// <param name="connString">连接字符串 (Connection String)</param>
/// <param name="cmdType">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdText">CommandType (Command type)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>DataReader</returns>
public static OleDbDataReader ExecuteReader(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
OleDbConnection conn = new OleDbConnection(connString);
// we use a try/catch here because if the method throws an exception we want to
// close the connection throw code, because no datareader will exist, hence the
// commandBehaviour.CloseConnection will not work
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
OleDbDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
// cmd.Parameters.Clear();
return rdr;
}
catch
{
conn.Close();
throw;
}
}
/// <summary>
/// 用于读取一个值,查询所返回的是结果集中第一行的第一列,省去了CommandType
/// To excute a SQL statement, and returns the first column of the first line
/// Default command type is text
/// </summary>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>结果集中第一行的第一列</returns>
public static object ExecuteScalar(string connString, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection conn = new OleDbConnection(connString))
{
PrepareCommand(cmd, conn, null, CommandType.Text, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 用于读取一个值,查询所返回的是结果集中第一行的第一列
/// To excute a SQL statement, and returns the first column of the first line
/// </summary>
/// <param name="connString">连接字符串 (Connection String)</param>
/// <param name="cmdType">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdText">CommandType (Command type)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>结果集中第一行的第一列</returns>
public static object ExecuteScalar(string connString, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
using (OleDbConnection conn = new OleDbConnection(connString))
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
}
/// <summary>
/// 用于读取一个值,查询所返回的是结果集中第一行的第一列
/// To excute a SQL statement, and returns the first column of the first line
/// a connection is passed in instead of a connection string
/// </summary>
/// <param name="conn">已初始化的OleDbConnection (a Conncection)</param>
/// <param name="connString">连接字符串 (Conntection String)</param>
/// <param name="cmdText">Command的SQL语句 (SQL Statement)</param>
/// <param name="cmdParms">参数列表 (Paramters)</param>
/// <returns>结果集中第一行的第一列</returns>
public static object ExecuteScalar(OleDbConnection conn, CommandType cmdType, string cmdText, params OleDbParameter[] cmdParms)
{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
object val = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return val;
}
/// <summary>
/// 在执行SQL语句之前的准备工作
/// </summary>
/// <param name="cmd">Command</param>
/// <param name="conn">Connection</param>
/// <param name="trans">Trasaction</param>
/// <param name="cmdType">CommandType</param>
/// <param name="cmdText">CommandText</param>
/// <param name="cmdParms">参数列表</param>
private static void PrepareCommand(OleDbCommand cmd, OleDbConnection conn, OleDbTransaction trans, CommandType cmdType, 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 = cmdType;
if (cmdParms != null)
{
foreach (OleDbParameter parm in cmdParms)
cmd.Parameters.Add(parm);
}
}
}
}
相关阅读 更多 +