一个简单的OleDb数据操作辅助类
来源:互联网 发布:手机壁纸的软件 编辑:程序博客网 时间:2024/04/30 03:03
using System;
using System.Data;
using System.Data.OleDb;
using System.Collections;
namespace Laiyunqing.OleDbHelper
...{
数据库连接对象#region 数据库连接对象
/**//// <summary>
/// 通过调用DataConnection;获得数据库连接字符串;
/// 为下列两个类库提供数据库连接字符串;
/// </summary>
/// <remarks>类名:connString</remarks>
public sealed class connString
...{
数据库连接字符串#region 数据库连接字符串
/**//// <summary>
/// 属性://静态类;返回数据库连接字符串
/// </summary>
public static string DbCnString
...{
get
...{
return ConnectionObj.ConnectionString;
}
}
#endregion 数据库连接字符串
}
#endregion 数据库连接对象
DataObj对数据库操作的核心类库#region DataObj对数据库操作的核心类库
/**//// <summary>
/// DataObj包含对数据库的所有操作和返回各种各种对象;
/// 操作:包括插入、删除、修改、事务处理等数据库相关的操作;
/// 返回对象:DataReader 、DataSet等;
/// 可以执行SQL语句或存储过程;
/// </summary>
public sealed class DataObj
...{
对Parameter数组参数的分配#region 对Parameter数组参数的分配
/**//// <summary>
/// 构造函数
/// </summary>
private DataObj() ...{}
/**//// <summary>
/// 则把OleDbParameters的每一个参数赋值到OleDbCommand中;
/// </summary>
/// <param name="command">Command对象</param>
/// <param name="commandParameters">OleDbParameter数组参数</param>
private static void AttachParameters(OleDbCommand command, OleDbParameter[] commandParameters)
...{
foreach (OleDbParameter p in commandParameters)
...{
if ((p.Direction == ParameterDirection.InputOutput) && (p.Value == null))
...{
p.Value = DBNull.Value;
}
command.Parameters.Add(p);
}
}
/**//// <summary>
/// 为OleDbParameter对象赋值.
/// 则分配数组的值到Parameters数组中.
/// </summary>
/// <param name="commandParameters">OleDbParameter类型数组参数</param>
/// <param name="parameterValues">Parameters数组</param>
private static void AssignParameterValues(OleDbParameter[] commandParameters, object[] parameterValues)
...{
if ((commandParameters == null) || (parameterValues == null))
...{
return;
}
// 参数长度必须与参数长度相同;否则抛出错误信息;
if (commandParameters.Length != parameterValues.Length)
...{
throw new ArgumentException("Parameter count does not match Parameter Value count.");
}
//分配相应的值到参数位置;
for (int i = 0, j = commandParameters.Length; i < j; i++)
...{
commandParameters[i].Value = parameterValues[i];
}
}
/**//// <summary>
/// 对命令的属性进行初始化(如连接,事务等)
/// </summary>
/// <param name="command">Command对象</param>
/// <param name="connection">Connection对象</param>
/// <param name="transaction">Transaction对象或Null'</param>
/// <param name="commandType">CommandType类型(SQL语句类型,普通SQL类型或存储过程类型)</param>
/// <param name="commandText">SQL语名或存储过程名称</param>
/// <param name="commandParameters">OleDbParameters数组参数</param>
private static void PrepareCommand(OleDbCommand command, OleDbConnection connection, OleDbTransaction transaction, CommandType commandType, string commandText, OleDbParameter[] commandParameters)
...{
if (connection.State != ConnectionState.Open)
...{
connection.Open();
}
command.Connection = connection;
command.CommandText = commandText;
if (transaction != null)
...{
command.Transaction = transaction;
}
command.CommandType = commandType;
if (commandParameters != null)
...{
//绑定参数
AttachParameters(command, commandParameters);
}
return;
}
#endregion 对Parameter数组参数的分配
ExecuteNonQuery执行插入、删除、修改、事务处理等数据库操作#region ExecuteNonQuery执行插入、删除、修改、事务处理等数据库操作
/**//// <summary>
/// 1.执行数据库的增删改操作
/// </summary>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <returns>返回一个System.Int32类型的执行数据库操作影响到的行数</returns>
public static int ExecuteNonQuery(CommandType commandType, string commandText)
...{
//调用重载(1--->2)
return ExecuteNonQuery(commandType, commandText, (OleDbParameter[])null);
}
/**//// <summary>
/// 2.执行数据库的增删改操作
/// </summary>
/// <remarks>
/// 例:
/// int result = ExecuteNonQuery(CommandType.StoredProcedure, "PublishOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个System.Int32类型的执行数据库操作影响到的行数</returns>
public static int ExecuteNonQuery(CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
//建立新的数据库连接对象;
using (OleDbConnection cn = new OleDbConnection(connString.DbCnString))
...{
cn.Open();
//调用重载(2--->5)
return ExecuteNonQuery(cn, commandType, commandText, commandParameters);
}
}
/**//// <summary>
/// 8.执行数据库的增删改操作
/// </summary>
/// <remarks>
/// 例:
/// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="transaction">有效有Transation事务</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个System.Int32类型的执行数据库操作影响到的行数</returns>
public static int ExecuteNonQuery(OleDbTransaction transaction, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
int retval = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return retval;
}
/**//// <summary>
/// 5.执行数据库的增删改操作
/// </summary>
/// <remarks>
/// 例:
/// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个System.Int32类型的执行数据库操作影响到的行数</returns>
public static int ExecuteNonQuery(OleDbConnection connection, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
//ExecuteNonQuery的核心;返回执行结果.
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, connection, (OleDbTransaction)null, commandType, commandText, commandParameters);
int retval = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return retval;
}
/**//// <summary>
/// 10.执行带事务处理的数据库的增删改操作
/// </summary>
/// <param name="commandText">SQL语句的字符串数组.例:string[] arrSql = {strSql1,strSql2};</param>
/// <param name="param">OleDbParameters参数数组;例:OleDbParameter [][] arrParam = {param1,param2};</param>
/// <returns>返回一个System.Int32类型的数据库事务操作影响到的几个表</returns>
public static int ExecuteNonQuery(string[] commandText,OleDbParameter[][] param)
...{
using(OleDbConnection cn = new OleDbConnection (connString.DbCnString))
...{
cn.Open();
OleDbCommand cmd = new OleDbCommand ();
OleDbTransaction Trans = cn.BeginTransaction();
cmd.Connection = cn;
cmd.Transaction = Trans;
try
...{
int iResult = 0;
for (int i = 0;i < commandText.Length;i++)
...{
ExecuteNonQuery(Trans,CommandType.Text,commandText[i],param[i]);
iResult++;
}
Trans.Commit();//提交事务
return iResult;
}
catch(OleDbException e)
...{
Trans.Rollback();//回滚事务
e.Message.ToString();
return 0;
}
finally
...{
cmd.Dispose();
cn.Close();
cn.Dispose();
}
}
}
/**//// <summary>
/// 11.执行数据库的增删改操作
/// </summary>
/// <param name="commandText">T-SQL command语句,例:"Select * From Orders"</param>
/// <returns></returns>
public static int ExecuteNonQuery(string commandText)
...{
return ExecuteNonQuery(CommandType.Text,commandText);
}
#endregion ExecuteNonQuery执行插入、删除、修改、事务处理等数据库操作
ExecuteDataSet返回一个DataSet对象#region ExecuteDataSet返回一个DataSet对象
/**//// <summary>
/// 1.返回一个DataSet对象
/// </summary>
/// <remarks>
/// 例:
/// DataSet ds = ExecuteDataset(CommandType.StoredProcedure, "GetOrders");
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <returns>返回一个DataSet对象</returns>
public static DataSet ExecuteDataset(CommandType commandType, string commandText)
...{
return ExecuteDataset(commandType, commandText, (OleDbParameter[])null);
}
/**//// <summary>
/// 2.返回一个DataSet对象
/// </summary>
/// <remarks>
/// 例:
/// DataSet ds = ExecuteDataset(CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个DataSet对象</returns>
public static DataSet ExecuteDataset(CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
using (OleDbConnection cn = new OleDbConnection(connString.DbCnString))
...{
cn.Open();
return ExecuteDataset(cn, commandType, commandText, commandParameters);
}
}
/**//// <summary>
/// 5.返回一个DataSet对象
/// </summary>
/// <remarks>
/// 例:
/// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个DataSet对象</returns>
public static DataSet ExecuteDataset(OleDbConnection connection, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, connection, (OleDbTransaction)null, commandType, commandText, commandParameters);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
/**//// <summary>
/// 10.返回一个DataSet对象
/// </summary>
/// <param name="commandText">T-SQL command语句,例:"Select * From Orders"</param>
/// <returns>返回一个DataSet对象</returns>
public static DataSet ExecuteDataset(string commandText)
...{
return ExecuteDataset(CommandType.Text, commandText, (OleDbParameter[])null);
}
#endregion ExecuteDataSet返回一个DataSet对象
ExecuteReader返回一个DataReader对象#region ExecuteReader返回一个DataReader对象
/**//// <summary>
/// 创建一个枚举类型
/// </summary>
private enum SqlConnectionOwnership
...{
/**//// <summary>Connection is owned and managed by SqlHelper</summary>
Internal,
/**//// <summary>Connection is owned and managed by the caller</summary>
External
}
/**//// <summary>
/// 1.返回一个DataReader对象
/// </summary>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="transaction">Transation事务对象</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">an array of SqlParameters to be associated with the command or 'null' if no parameters are required</param>
/// <param name="connectionOwnership">indicates whether the connection parameter was provided by the caller, or created by SqlHelper</param>
/// <returns>DataReader对象</returns>
private static OleDbDataReader ExecuteReader(OleDbConnection connection, OleDbTransaction transaction, CommandType commandType, string commandText, OleDbParameter[] commandParameters, SqlConnectionOwnership connectionOwnership)
...{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters);
OleDbDataReader dr;
if (connectionOwnership == SqlConnectionOwnership.External)
...{
dr = cmd.ExecuteReader();
}
else
...{
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
cmd.Dispose();
cmd.Parameters.Clear();
return dr;
}
/**//// <summary>
/// 2.返回一个DataReader对象
/// </summary>
/// <remarks>
/// 例:
/// OleDbDataReader dr = ExecuteReader(CommandType.StoredProcedure, "GetOrders");
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <returns>DataReader对象</returns>
public static OleDbDataReader ExecuteReader(CommandType commandType, string commandText)
...{
return ExecuteReader(commandType, commandText, (OleDbParameter[])null);
}
/**//// <summary>
/// 3.返回一个DataReader对象
/// </summary>
/// <remarks>`
/// 例:
/// OleDbDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>DataReader对象</returns>
public static OleDbDataReader ExecuteReader(CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
OleDbConnection cn = new OleDbConnection(connString.DbCnString);
cn.Open();
try
...{
return ExecuteReader(cn, null, commandType, commandText, commandParameters,SqlConnectionOwnership.Internal);
}
catch
...{
cn.Close();
throw;
}
}
/**//// <summary>
/// 6.返回一个DataReader对象
/// </summary>
/// <remarks>
/// 例:
/// OleDbDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>DataReader对象</returns>
public static OleDbDataReader ExecuteReader(OleDbConnection connection, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
return ExecuteReader(connection, (OleDbTransaction)null, commandType, commandText, commandParameters, SqlConnectionOwnership.External);
}
/**//// <summary>
/// 11.返回一个DataReader对象
/// </summary>
/// <param name="commandText">T-SQL command语句,例:"Select * From Orders"</param>
/// <returns></returns>
public static OleDbDataReader ExecuteReader(string commandText)
...{
return ExecuteReader(CommandType.Text,commandText);
}
#endregion ExecuteReader返回一个DataReader对象
ExecuteScalar 返回SQL语句执行的函数查询#region ExecuteScalar 返回SQL语句执行的函数查询
/**//// <summary>
/// 1.用ExecuteScalar方法执行SQL语句或存储过程
/// </summary>
/// <remarks>
/// 例:
/// int orderCount = (int)ExecuteScalar(CommandType.StoredProcedure, "GetOrderCount");
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <returns>返回Object对象类型数据;可能是int类型或String类型</returns>
public static object ExecuteScalar(CommandType commandType, string commandText)
...{
//重载
return ExecuteScalar(commandType, commandText, (OleDbParameter[])null);
}
/**//// <summary>
/// 2.用ExecuteScalar方法执行SQL语句或存储过程
/// </summary>
/// <remarks>
/// 例:
/// int orderCount = (int)ExecuteScalar(CommandType.StoredProcedure, "GetOrderCount", new OleDbParameter("@prodid", 24));
/// 返回存储过程中的@prodid.
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回Object对象类型数据;可能是int类型或String类型</returns>
public static object ExecuteScalar(CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
using (OleDbConnection cn = new OleDbConnection(connString.DbCnString))
...{
cn.Open();
return ExecuteScalar(cn, commandType, commandText, commandParameters);
}
}
/**//// <summary>
/// 5.用ExecuteScalar方法执行SQL语句或存储过程
/// </summary>
/// <remarks>
/// 例:
/// int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回Object对象类型数据;可能是int类型或String类型</returns>
public static object ExecuteScalar(OleDbConnection connection, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, connection, (OleDbTransaction)null, commandType, commandText, commandParameters);
object retval = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return retval;
}
/**//// <summary>
/// 10.用ExecuteScalar方法执行SQL语句
/// </summary>
/// <param name="commandText">T-SQL command语句;例:"Select * From Orders"</param>
/// <returns>返回Object对象类型数据;可能是int类型或String类型</returns>
public static object ExecuteScalar(string commandText)
...{
//重载
return ExecuteScalar(CommandType.Text,commandText);
}
#endregion ExecuteScalar 返回SQL语句执行的函数查询
}
#endregion DataObj对数据库操作的核心类库
Microsoft Visual .NET#region Microsoft Visual .NET
/**//// <summary>.
/// </summary>
public sealed class SqlHelperParameterCache
...{
private methods, variables, and constructors#region private methods, variables, and constructors
/**//// <summary>
/// 构造函数
/// </summary>
private SqlHelperParameterCache() ...{}
private static Hashtable paramCache = Hashtable.Synchronized(new Hashtable());
/**//// <summary>
/// </summary>
/// <param name="spName">存储过程名称</param>
/// <param name="includeReturnValueParameter">布尔型whether or not to include their return value parameter</param>
/// <returns>OleDbParameter数组</returns>
private static OleDbParameter[] DiscoverSpParameterSet(string spName, bool includeReturnValueParameter)
...{
using (OleDbConnection cn = new OleDbConnection(connString.DbCnString))
using (OleDbCommand cmd = new OleDbCommand(spName,cn))
...{
cn.Open();
cmd.CommandType = CommandType.StoredProcedure;
OleDbCommandBuilder.DeriveParameters(cmd);
if (!includeReturnValueParameter)
...{
cmd.Parameters.RemoveAt(0);
}
OleDbParameter[] discoveredParameters = new OleDbParameter[cmd.Parameters.Count];;
cmd.Parameters.CopyTo(discoveredParameters, 0);
return discoveredParameters;
}
}
/**//// <summary>
/// </summary>
/// <param name="originalParameters">OleDbParameter数组</param>
/// <returns>OleDbParameter数组</returns>
private static OleDbParameter[] CloneParameters(OleDbParameter[] originalParameters)
...{
OleDbParameter[] clonedParameters = new OleDbParameter[originalParameters.Length];
for (int i = 0, j = originalParameters.Length; i < j; i++)
...{
clonedParameters[i] = (OleDbParameter)((ICloneable)originalParameters[i]).Clone();
}
return clonedParameters;
}
#endregion private methods, variables, and constructors
caching functions#region caching functions
/**//// <summary>
/// </summary>
/// <param name="commandText">存储过程名称或T-SQL Command语句</param>
/// <param name="commandParameters">OleDbParameter数组</param>
public static void CacheParameterSet(string commandText, params OleDbParameter[] commandParameters)
...{
string hashKey =connString.DbCnString + ":" + commandText;
paramCache[hashKey] = commandParameters;
}
/**//// <summary>
/// </summary>
/// <param name="commandText">存储过程名称或T-SQL command语句</param>
/// <returns>OleDbParameter数组</returns>
public static OleDbParameter[] GetCachedParameterSet(string commandText)
...{
string hashKey = connString.DbCnString + ":" + commandText;
OleDbParameter[] cachedParameters = (OleDbParameter[])paramCache[hashKey];
if (cachedParameters == null)
...{
return null;
}
else
...{
return CloneParameters(cachedParameters);
}
}
#endregion caching functions
Parameter Discovery Functions#region Parameter Discovery Functions
/**//// <summary>
/// </summary>
/// <param name="spName">存储过程名程</param>
/// <returns>OleDbParameter数组</returns>
public static OleDbParameter[] GetSpParameterSet(string spName)
...{
return GetSpParameterSet(spName, false);
}
/**//// <summary>
/// </summary>
/// <param name="spName">存储过程名称</param>
/// <param name="includeReturnValueParameter">布尔型;a bool value indicating whether the return value parameter should be included in the results</param>
/// <returns>OleDbParameters参数</returns>
public static OleDbParameter[] GetSpParameterSet(string spName, bool includeReturnValueParameter)
...{
string hashKey = connString.DbCnString + ":" + spName + (includeReturnValueParameter ? ":include ReturnValue Parameter":"");
OleDbParameter[] cachedParameters;
cachedParameters = (OleDbParameter[])paramCache[hashKey];
if (cachedParameters == null)
...{
cachedParameters = (OleDbParameter[])(paramCache[hashKey] = DiscoverSpParameterSet(spName, includeReturnValueParameter));
}
return CloneParameters(cachedParameters);
}
#endregion Parameter Discovery Functions
}
#endregion
}
using System.Data;
using System.Data.OleDb;
using System.Collections;
namespace Laiyunqing.OleDbHelper
...{
数据库连接对象#region 数据库连接对象
/**//// <summary>
/// 通过调用DataConnection;获得数据库连接字符串;
/// 为下列两个类库提供数据库连接字符串;
/// </summary>
/// <remarks>类名:connString</remarks>
public sealed class connString
...{
数据库连接字符串#region 数据库连接字符串
/**//// <summary>
/// 属性://静态类;返回数据库连接字符串
/// </summary>
public static string DbCnString
...{
get
...{
return ConnectionObj.ConnectionString;
}
}
#endregion 数据库连接字符串
}
#endregion 数据库连接对象
DataObj对数据库操作的核心类库#region DataObj对数据库操作的核心类库
/**//// <summary>
/// DataObj包含对数据库的所有操作和返回各种各种对象;
/// 操作:包括插入、删除、修改、事务处理等数据库相关的操作;
/// 返回对象:DataReader 、DataSet等;
/// 可以执行SQL语句或存储过程;
/// </summary>
public sealed class DataObj
...{
对Parameter数组参数的分配#region 对Parameter数组参数的分配
/**//// <summary>
/// 构造函数
/// </summary>
private DataObj() ...{}
/**//// <summary>
/// 则把OleDbParameters的每一个参数赋值到OleDbCommand中;
/// </summary>
/// <param name="command">Command对象</param>
/// <param name="commandParameters">OleDbParameter数组参数</param>
private static void AttachParameters(OleDbCommand command, OleDbParameter[] commandParameters)
...{
foreach (OleDbParameter p in commandParameters)
...{
if ((p.Direction == ParameterDirection.InputOutput) && (p.Value == null))
...{
p.Value = DBNull.Value;
}
command.Parameters.Add(p);
}
}
/**//// <summary>
/// 为OleDbParameter对象赋值.
/// 则分配数组的值到Parameters数组中.
/// </summary>
/// <param name="commandParameters">OleDbParameter类型数组参数</param>
/// <param name="parameterValues">Parameters数组</param>
private static void AssignParameterValues(OleDbParameter[] commandParameters, object[] parameterValues)
...{
if ((commandParameters == null) || (parameterValues == null))
...{
return;
}
// 参数长度必须与参数长度相同;否则抛出错误信息;
if (commandParameters.Length != parameterValues.Length)
...{
throw new ArgumentException("Parameter count does not match Parameter Value count.");
}
//分配相应的值到参数位置;
for (int i = 0, j = commandParameters.Length; i < j; i++)
...{
commandParameters[i].Value = parameterValues[i];
}
}
/**//// <summary>
/// 对命令的属性进行初始化(如连接,事务等)
/// </summary>
/// <param name="command">Command对象</param>
/// <param name="connection">Connection对象</param>
/// <param name="transaction">Transaction对象或Null'</param>
/// <param name="commandType">CommandType类型(SQL语句类型,普通SQL类型或存储过程类型)</param>
/// <param name="commandText">SQL语名或存储过程名称</param>
/// <param name="commandParameters">OleDbParameters数组参数</param>
private static void PrepareCommand(OleDbCommand command, OleDbConnection connection, OleDbTransaction transaction, CommandType commandType, string commandText, OleDbParameter[] commandParameters)
...{
if (connection.State != ConnectionState.Open)
...{
connection.Open();
}
command.Connection = connection;
command.CommandText = commandText;
if (transaction != null)
...{
command.Transaction = transaction;
}
command.CommandType = commandType;
if (commandParameters != null)
...{
//绑定参数
AttachParameters(command, commandParameters);
}
return;
}
#endregion 对Parameter数组参数的分配
ExecuteNonQuery执行插入、删除、修改、事务处理等数据库操作#region ExecuteNonQuery执行插入、删除、修改、事务处理等数据库操作
/**//// <summary>
/// 1.执行数据库的增删改操作
/// </summary>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <returns>返回一个System.Int32类型的执行数据库操作影响到的行数</returns>
public static int ExecuteNonQuery(CommandType commandType, string commandText)
...{
//调用重载(1--->2)
return ExecuteNonQuery(commandType, commandText, (OleDbParameter[])null);
}
/**//// <summary>
/// 2.执行数据库的增删改操作
/// </summary>
/// <remarks>
/// 例:
/// int result = ExecuteNonQuery(CommandType.StoredProcedure, "PublishOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个System.Int32类型的执行数据库操作影响到的行数</returns>
public static int ExecuteNonQuery(CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
//建立新的数据库连接对象;
using (OleDbConnection cn = new OleDbConnection(connString.DbCnString))
...{
cn.Open();
//调用重载(2--->5)
return ExecuteNonQuery(cn, commandType, commandText, commandParameters);
}
}
/**//// <summary>
/// 8.执行数据库的增删改操作
/// </summary>
/// <remarks>
/// 例:
/// int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="transaction">有效有Transation事务</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个System.Int32类型的执行数据库操作影响到的行数</returns>
public static int ExecuteNonQuery(OleDbTransaction transaction, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, transaction.Connection, transaction, commandType, commandText, commandParameters);
int retval = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return retval;
}
/**//// <summary>
/// 5.执行数据库的增删改操作
/// </summary>
/// <remarks>
/// 例:
/// int result = ExecuteNonQuery(conn, CommandType.StoredProcedure, "PublishOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个System.Int32类型的执行数据库操作影响到的行数</returns>
public static int ExecuteNonQuery(OleDbConnection connection, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
//ExecuteNonQuery的核心;返回执行结果.
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, connection, (OleDbTransaction)null, commandType, commandText, commandParameters);
int retval = cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return retval;
}
/**//// <summary>
/// 10.执行带事务处理的数据库的增删改操作
/// </summary>
/// <param name="commandText">SQL语句的字符串数组.例:string[] arrSql = {strSql1,strSql2};</param>
/// <param name="param">OleDbParameters参数数组;例:OleDbParameter [][] arrParam = {param1,param2};</param>
/// <returns>返回一个System.Int32类型的数据库事务操作影响到的几个表</returns>
public static int ExecuteNonQuery(string[] commandText,OleDbParameter[][] param)
...{
using(OleDbConnection cn = new OleDbConnection (connString.DbCnString))
...{
cn.Open();
OleDbCommand cmd = new OleDbCommand ();
OleDbTransaction Trans = cn.BeginTransaction();
cmd.Connection = cn;
cmd.Transaction = Trans;
try
...{
int iResult = 0;
for (int i = 0;i < commandText.Length;i++)
...{
ExecuteNonQuery(Trans,CommandType.Text,commandText[i],param[i]);
iResult++;
}
Trans.Commit();//提交事务
return iResult;
}
catch(OleDbException e)
...{
Trans.Rollback();//回滚事务
e.Message.ToString();
return 0;
}
finally
...{
cmd.Dispose();
cn.Close();
cn.Dispose();
}
}
}
/**//// <summary>
/// 11.执行数据库的增删改操作
/// </summary>
/// <param name="commandText">T-SQL command语句,例:"Select * From Orders"</param>
/// <returns></returns>
public static int ExecuteNonQuery(string commandText)
...{
return ExecuteNonQuery(CommandType.Text,commandText);
}
#endregion ExecuteNonQuery执行插入、删除、修改、事务处理等数据库操作
ExecuteDataSet返回一个DataSet对象#region ExecuteDataSet返回一个DataSet对象
/**//// <summary>
/// 1.返回一个DataSet对象
/// </summary>
/// <remarks>
/// 例:
/// DataSet ds = ExecuteDataset(CommandType.StoredProcedure, "GetOrders");
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <returns>返回一个DataSet对象</returns>
public static DataSet ExecuteDataset(CommandType commandType, string commandText)
...{
return ExecuteDataset(commandType, commandText, (OleDbParameter[])null);
}
/**//// <summary>
/// 2.返回一个DataSet对象
/// </summary>
/// <remarks>
/// 例:
/// DataSet ds = ExecuteDataset(CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个DataSet对象</returns>
public static DataSet ExecuteDataset(CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
using (OleDbConnection cn = new OleDbConnection(connString.DbCnString))
...{
cn.Open();
return ExecuteDataset(cn, commandType, commandText, commandParameters);
}
}
/**//// <summary>
/// 5.返回一个DataSet对象
/// </summary>
/// <remarks>
/// 例:
/// DataSet ds = ExecuteDataset(conn, CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回一个DataSet对象</returns>
public static DataSet ExecuteDataset(OleDbConnection connection, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, connection, (OleDbTransaction)null, commandType, commandText, commandParameters);
OleDbDataAdapter da = new OleDbDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds);
cmd.Parameters.Clear();
return ds;
}
/**//// <summary>
/// 10.返回一个DataSet对象
/// </summary>
/// <param name="commandText">T-SQL command语句,例:"Select * From Orders"</param>
/// <returns>返回一个DataSet对象</returns>
public static DataSet ExecuteDataset(string commandText)
...{
return ExecuteDataset(CommandType.Text, commandText, (OleDbParameter[])null);
}
#endregion ExecuteDataSet返回一个DataSet对象
ExecuteReader返回一个DataReader对象#region ExecuteReader返回一个DataReader对象
/**//// <summary>
/// 创建一个枚举类型
/// </summary>
private enum SqlConnectionOwnership
...{
/**//// <summary>Connection is owned and managed by SqlHelper</summary>
Internal,
/**//// <summary>Connection is owned and managed by the caller</summary>
External
}
/**//// <summary>
/// 1.返回一个DataReader对象
/// </summary>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="transaction">Transation事务对象</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">an array of SqlParameters to be associated with the command or 'null' if no parameters are required</param>
/// <param name="connectionOwnership">indicates whether the connection parameter was provided by the caller, or created by SqlHelper</param>
/// <returns>DataReader对象</returns>
private static OleDbDataReader ExecuteReader(OleDbConnection connection, OleDbTransaction transaction, CommandType commandType, string commandText, OleDbParameter[] commandParameters, SqlConnectionOwnership connectionOwnership)
...{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, connection, transaction, commandType, commandText, commandParameters);
OleDbDataReader dr;
if (connectionOwnership == SqlConnectionOwnership.External)
...{
dr = cmd.ExecuteReader();
}
else
...{
dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
cmd.Dispose();
cmd.Parameters.Clear();
return dr;
}
/**//// <summary>
/// 2.返回一个DataReader对象
/// </summary>
/// <remarks>
/// 例:
/// OleDbDataReader dr = ExecuteReader(CommandType.StoredProcedure, "GetOrders");
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <returns>DataReader对象</returns>
public static OleDbDataReader ExecuteReader(CommandType commandType, string commandText)
...{
return ExecuteReader(commandType, commandText, (OleDbParameter[])null);
}
/**//// <summary>
/// 3.返回一个DataReader对象
/// </summary>
/// <remarks>`
/// 例:
/// OleDbDataReader dr = ExecuteReader(connString, CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>DataReader对象</returns>
public static OleDbDataReader ExecuteReader(CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
OleDbConnection cn = new OleDbConnection(connString.DbCnString);
cn.Open();
try
...{
return ExecuteReader(cn, null, commandType, commandText, commandParameters,SqlConnectionOwnership.Internal);
}
catch
...{
cn.Close();
throw;
}
}
/**//// <summary>
/// 6.返回一个DataReader对象
/// </summary>
/// <remarks>
/// 例:
/// OleDbDataReader dr = ExecuteReader(conn, CommandType.StoredProcedure, "GetOrders", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>DataReader对象</returns>
public static OleDbDataReader ExecuteReader(OleDbConnection connection, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
return ExecuteReader(connection, (OleDbTransaction)null, commandType, commandText, commandParameters, SqlConnectionOwnership.External);
}
/**//// <summary>
/// 11.返回一个DataReader对象
/// </summary>
/// <param name="commandText">T-SQL command语句,例:"Select * From Orders"</param>
/// <returns></returns>
public static OleDbDataReader ExecuteReader(string commandText)
...{
return ExecuteReader(CommandType.Text,commandText);
}
#endregion ExecuteReader返回一个DataReader对象
ExecuteScalar 返回SQL语句执行的函数查询#region ExecuteScalar 返回SQL语句执行的函数查询
/**//// <summary>
/// 1.用ExecuteScalar方法执行SQL语句或存储过程
/// </summary>
/// <remarks>
/// 例:
/// int orderCount = (int)ExecuteScalar(CommandType.StoredProcedure, "GetOrderCount");
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <returns>返回Object对象类型数据;可能是int类型或String类型</returns>
public static object ExecuteScalar(CommandType commandType, string commandText)
...{
//重载
return ExecuteScalar(commandType, commandText, (OleDbParameter[])null);
}
/**//// <summary>
/// 2.用ExecuteScalar方法执行SQL语句或存储过程
/// </summary>
/// <remarks>
/// 例:
/// int orderCount = (int)ExecuteScalar(CommandType.StoredProcedure, "GetOrderCount", new OleDbParameter("@prodid", 24));
/// 返回存储过程中的@prodid.
/// </remarks>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回Object对象类型数据;可能是int类型或String类型</returns>
public static object ExecuteScalar(CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
using (OleDbConnection cn = new OleDbConnection(connString.DbCnString))
...{
cn.Open();
return ExecuteScalar(cn, commandType, commandText, commandParameters);
}
}
/**//// <summary>
/// 5.用ExecuteScalar方法执行SQL语句或存储过程
/// </summary>
/// <remarks>
/// 例:
/// int orderCount = (int)ExecuteScalar(conn, CommandType.StoredProcedure, "GetOrderCount", new OleDbParameter("@prodid", 24));
/// </remarks>
/// <param name="connection">数据库连接对象Connection</param>
/// <param name="commandType">执行Command对象的类型;可以是T-SQL command语句 或 存储过程;例:CommandType.Text、CommandType.StoredProcedure</param>
/// <param name="commandText">T-SQL command语句 或 存储过程名称 例:"Select * From Orders"、"TestStoredProcedure"</param>
/// <param name="commandParameters">OleDbParameters数组参数;例:OleDbParameter [] param = new OleDbParameter[1];中的名称param</param>
/// <returns>返回Object对象类型数据;可能是int类型或String类型</returns>
public static object ExecuteScalar(OleDbConnection connection, CommandType commandType, string commandText, params OleDbParameter[] commandParameters)
...{
OleDbCommand cmd = new OleDbCommand();
PrepareCommand(cmd, connection, (OleDbTransaction)null, commandType, commandText, commandParameters);
object retval = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return retval;
}
/**//// <summary>
/// 10.用ExecuteScalar方法执行SQL语句
/// </summary>
/// <param name="commandText">T-SQL command语句;例:"Select * From Orders"</param>
/// <returns>返回Object对象类型数据;可能是int类型或String类型</returns>
public static object ExecuteScalar(string commandText)
...{
//重载
return ExecuteScalar(CommandType.Text,commandText);
}
#endregion ExecuteScalar 返回SQL语句执行的函数查询
}
#endregion DataObj对数据库操作的核心类库
Microsoft Visual .NET#region Microsoft Visual .NET
/**//// <summary>.
/// </summary>
public sealed class SqlHelperParameterCache
...{
private methods, variables, and constructors#region private methods, variables, and constructors
/**//// <summary>
/// 构造函数
/// </summary>
private SqlHelperParameterCache() ...{}
private static Hashtable paramCache = Hashtable.Synchronized(new Hashtable());
/**//// <summary>
/// </summary>
/// <param name="spName">存储过程名称</param>
/// <param name="includeReturnValueParameter">布尔型whether or not to include their return value parameter</param>
/// <returns>OleDbParameter数组</returns>
private static OleDbParameter[] DiscoverSpParameterSet(string spName, bool includeReturnValueParameter)
...{
using (OleDbConnection cn = new OleDbConnection(connString.DbCnString))
using (OleDbCommand cmd = new OleDbCommand(spName,cn))
...{
cn.Open();
cmd.CommandType = CommandType.StoredProcedure;
OleDbCommandBuilder.DeriveParameters(cmd);
if (!includeReturnValueParameter)
...{
cmd.Parameters.RemoveAt(0);
}
OleDbParameter[] discoveredParameters = new OleDbParameter[cmd.Parameters.Count];;
cmd.Parameters.CopyTo(discoveredParameters, 0);
return discoveredParameters;
}
}
/**//// <summary>
/// </summary>
/// <param name="originalParameters">OleDbParameter数组</param>
/// <returns>OleDbParameter数组</returns>
private static OleDbParameter[] CloneParameters(OleDbParameter[] originalParameters)
...{
OleDbParameter[] clonedParameters = new OleDbParameter[originalParameters.Length];
for (int i = 0, j = originalParameters.Length; i < j; i++)
...{
clonedParameters[i] = (OleDbParameter)((ICloneable)originalParameters[i]).Clone();
}
return clonedParameters;
}
#endregion private methods, variables, and constructors
caching functions#region caching functions
/**//// <summary>
/// </summary>
/// <param name="commandText">存储过程名称或T-SQL Command语句</param>
/// <param name="commandParameters">OleDbParameter数组</param>
public static void CacheParameterSet(string commandText, params OleDbParameter[] commandParameters)
...{
string hashKey =connString.DbCnString + ":" + commandText;
paramCache[hashKey] = commandParameters;
}
/**//// <summary>
/// </summary>
/// <param name="commandText">存储过程名称或T-SQL command语句</param>
/// <returns>OleDbParameter数组</returns>
public static OleDbParameter[] GetCachedParameterSet(string commandText)
...{
string hashKey = connString.DbCnString + ":" + commandText;
OleDbParameter[] cachedParameters = (OleDbParameter[])paramCache[hashKey];
if (cachedParameters == null)
...{
return null;
}
else
...{
return CloneParameters(cachedParameters);
}
}
#endregion caching functions
Parameter Discovery Functions#region Parameter Discovery Functions
/**//// <summary>
/// </summary>
/// <param name="spName">存储过程名程</param>
/// <returns>OleDbParameter数组</returns>
public static OleDbParameter[] GetSpParameterSet(string spName)
...{
return GetSpParameterSet(spName, false);
}
/**//// <summary>
/// </summary>
/// <param name="spName">存储过程名称</param>
/// <param name="includeReturnValueParameter">布尔型;a bool value indicating whether the return value parameter should be included in the results</param>
/// <returns>OleDbParameters参数</returns>
public static OleDbParameter[] GetSpParameterSet(string spName, bool includeReturnValueParameter)
...{
string hashKey = connString.DbCnString + ":" + spName + (includeReturnValueParameter ? ":include ReturnValue Parameter":"");
OleDbParameter[] cachedParameters;
cachedParameters = (OleDbParameter[])paramCache[hashKey];
if (cachedParameters == null)
...{
cachedParameters = (OleDbParameter[])(paramCache[hashKey] = DiscoverSpParameterSet(spName, includeReturnValueParameter));
}
return CloneParameters(cachedParameters);
}
#endregion Parameter Discovery Functions
}
#endregion
}
下载代码:下载
- 一个简单的OleDb数据操作辅助类
- 一个简单的数据操作类
- 一个简单的数据操作类
- 原创:一个操作Message Queue的辅助类
- 一个用于Ini文件操作的辅助类
- 一个简单的NET数据访问层操作类
- 列表控件数据操作辅助类
- 一个支持SqlClient和OleDb的ADO.NET常用操作通用类
- 基于OleDb数据访问的基础类
- c#操作OleDB类
- 数据访问类OleDb
- Jni 简单实战 写一个c调用java的辅助类
- C#使用OleDB操作ACCESS插入数据时提示:至少一个参数没有被指定值。
- ViewDragHelper一个帮助你轻松完成滑动操作的辅助类
- 初学时的数据库操作辅助类
- 对 XML 操作的辅助类
- 使用C#操作IIS7的辅助类
- android 辅助工具类——文件简单操作辅助类
- 更改Visual Studio 2005默认开发语言
- .NET 2.0 入门教程
- Random类提供的各种方法
- 跟我一起写 Makefile
- linux书籍
- 一个简单的OleDb数据操作辅助类
- Flex Builder 2以及Charting注册码
- java ee5 tutorial - bookstore2 MVC实现(dispatcher)
- 关于字符串匹配算法的survey
- (精心整理)WindowsXP终极优化设置
- 很希望和你成为朋友!
- 《Flash 8 中文版 动画制作入门》专家简评
- Struts标签
- 实战DDD(Domain-Driven Design领域驱动设计)