2023年6月21日发(作者:)
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
// 文件
using System;
using ;
using uration;
using ;
using tions;
using ;
using tion;
//using ;
namespace
{
///
/// 数据库的通用访问代码
/// 此类为抽象类,不允许实例化,在应用时直接调用即可
///
public abstract class SqlHelper
{
#region Const
///
///DB连接串
///
private const string XPATH_CONNECTION_STRING = "SQLDBCon";
#endregion
//获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改
//public static readonly string ConnectionString =
tionStrings["Connection String"].ConnectionString;
public static readonly string ConnectionString = ;
// 哈希表用来存储缓存的参数信息,哈希表可以存储任意类型的参数。
private static Hashtable parmCache = onized(new Hashtable());
///
///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
/// 使用参数数组形式提供参数列表
///
///
/// 使用示例:
/// int result = ExecuteNonQuery(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
1 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string
cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
//通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = eNonQuery();
//清空SqlCommand中的参数列表
;
return val;
}
}
///
///执行一条不返回结果的SqlCommand,通过一个已经存在的数据库连接
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// int result = ExecuteNonQuery(conn, Procedure, "PublishOrders",
new SqlParameter("@prodid", 24));
///
/// 一个现有的数据库连接
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string
cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
int val = eNonQuery();
;
return val;
}
///
/// 执行一条不返回结果的SqlCommand,通过一个已经存在的数据库事物处理
/// 使用参数数组提供参数
///
///
/// 使用示例:
2 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
/// int result = ExecuteNonQuery(trans, Procedure, "PublishOrders",
new SqlParameter("@prodid", 24));
///
/// 一个存在的 sql 事物处理
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
/// SqlTransaction trans
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string
cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, tion, trans, cmdType, cmdText, commandParameters);
//insert
//insert
//int dds = eNonQuery(tion, ,
ng(), null);
int val = eNonQuery();
;
return val;
}
///
/// 执行一条返回结果集的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// SqlDataReader r = ExecuteReader(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType,
string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
// 在这里使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在,
3 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
//onnection的语句就不会执行,触发的异常由catch捕获。
//关闭数据库连接,并通过throw再次引发捕捉到的异常。
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = eReader(onnection);
;
return rdr;
}
catch
{
();
throw;
}
}
///
/// 执行一条返回结果集的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// SqlDataReader r = ExecuteReader(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
public static DataTable ExecuteReaderToDataTable(string connectionString, CommandType
cmdType, string cmdText, params SqlParameter[] commandParameters)
{
return ConvertDataReaderToDataTable(ExecuteReader(connectionString, cmdType,
cmdText, commandParameters));
}
///
///
///
///
///
///
///
///
4 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
/// 查数据用
public static DataSet ExecuteDataset(string connectionString, CommandType cmdType,
string cmdText, params SqlParameter[] commandParameters)
{
//create a command and prepare it for execution
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
//create the DataAdapter & DataSet
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
//fill the DataSet using default values for DataTable names, etc.
(ds);
e();
// detach the OracleParameters from the command object, so they can be used again.
;
e();
//return the dataset
return ds;
}
///
/// 执行SQL语句,返回影响的记录数
///
/// SQL语句
///
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null,, SQLString,
cmdParms);
int rows = eNonQuery();
;
return rows;
}
catch ( e)
{
throw e;
}
5 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
}
}
}
///
/// 执行一条返回第一条记录第一列的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// Object obj = ExecuteScalar(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
public static object ExecuteScalar(string connectionString, CommandType cmdType, string
cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection connection = new SqlConnection(connectionString))
{
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = eScalar();
;
return val;
}
}
///
/// 执行一条返回第一条记录第一列的SqlCommand命令,通过已经存在的数据库连接。
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// Object obj = ExecuteScalar(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个已经存在的数据库连接
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表6 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
///
public static object ExecuteScalar(SqlConnection connection, CommandType cmdType,
string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = eScalar();
;
return val;
}
///
/// 缓存参数数组
///
/// 参数缓存的键值
/// 被缓存的参数列表
public static void CacheParameters(string cacheKey, params SqlParameter[]
commandParameters)
{
parmCache[cacheKey] = commandParameters;
}
///
/// 获取被缓存的参数
///
/// 用于查找参数的KEY值
///
public static SqlParameter[] GetCachedParameters(string cacheKey)
{
SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
if (cachedParms == null)
return null;
//新建一个参数的克隆列表
SqlParameter[] clonedParms = new SqlParameter[];
//通过循环为克隆参数列表赋值
for (int i = 0, j = ; i < j; i++)
//使用clone方法复制参数列表中的参数
clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
return clonedParms;
}
///
/// 为执行命令准备参数
///
/// SqlCommand 命令
7 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
/// 已经存在的数据库连接
/// 数据库事物处理
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// Command text,T-SQL语句 例如 Select * from Products
/// 返回带参数的命令
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction
trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
{
//判断数据库连接状态
if ( != )
();
tion = conn;
dText = cmdText;
//判断是否需要事物处理
if (trans != null)
ction = trans;
dType = cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
;
}
}
///
/// 开始数据库事务
///
///
///
public static SqlTransaction BeginTransaction(string connectionString)
{
SqlConnection conn = new SqlConnection(connectionString);
//判断数据库连接状态
if ( != )
();
return ransaction();
}
///
/// 提交事务
///
///
public static void CommitTransaction(SqlTransaction transaction)
{
SqlConnection conn = tion;
();
8 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
();
}
///
/// 回滚事务
///
///
public static void RollbackTransaction(SqlTransaction transaction)
{
SqlConnection conn = tion;
ck();
();
}
public static SqlParameter[] CreateParameters(object Object)
{
Type type = e();
PropertyInfo[] properties = perties();
SqlParameter[] Parameters = new SqlParameter[];
for (int i = 0; i < ; i++)
{
PropertyInfo property = (PropertyInfo)properties[i];
Parameters[i] = new SqlParameter("@" + , ue(Object,
null));
}
return Parameters;
}
public static DataTable ConvertDataReaderToDataTable(IDataReader reader)
{
DataTable objDataTable = new DataTable();//创建一个DataTable对象
int intFieldCount = ount;
//为DataTable对象添加对应的列字段信息
for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
{
, ldType(intCounter));
}
oadData();
object[] objValues = new object[intFieldCount];
//逐行读取SqlDataReader对象中每一行数据
//并把数据添加到对象dataTable中
while (())
{
ues(objValues);
taRow(objValues, true);
}
///关闭数据读取器
9 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
();
dData();
return objDataTable;//返回一个DataTable对象
}
///
/// 用DataTable对象的数据批量更新数据表
///
/// DataTable对象
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// Command text,T-SQL语句 例如 Select * from Products
/// 返回带参数的命令
/*
========================================================================================
更新记录
番号 更新日期 更新者
0001 2011/06/17
========================================================================================= */
public static int UpdateByDataTable(DataTable table, CommandType cmdType, string cmdText,
SqlParameter[] cmdParms)
{
SqlTransaction trans =null;
try
{
if (table == null || <= 0)
{
return -1;
}
string strConnectionString = ; ;
//事务启动
trans = BeginTransaction(strConnectionString);
//SQL命令的创建
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, tion, trans, cmdType, cmdText, cmdParms);
SqlDataAdapter objAdapter = new SqlDataAdapter(cmd);
SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(objAdapter);
int intR = (table);
CommitTransaction(trans);
return intR;
}
catch (Exception ex)
{
if(trans!=null)
{
更新内容
S 新 建
10 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
RollbackTransaction(trans);
}
throw ex;
}
}
#region 公用方法
public static int GetMaxID(string FieldName, string TableName)
{
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = GetSingle(strsql);
if (obj == null)
{
return 1;
}
else
{
return (ng());
}
}
///
/// 执行一条计算查询结果语句,返回查询结果(object)。
///
/// 计算查询结果语句
///
public static object GetSingle(string SQLString)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
();
object obj = eScalar();
if (((obj, null)) || ((obj,
{
return null;
}
else
{
return obj;
}
}
catch ( e)
11 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
{
();
throw e;
}
}
}
}
public static bool Exists(string strSql, params SqlParameter[] cmdParms)
{
object obj = GetSingle(strSql, cmdParms);
int cmdresult;
if (((obj, null)) || ((obj,
{
cmdresult = 0;
}
else
{
cmdresult = (ng());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
///
/// 执行一条计算查询结果语句,返回查询结果(object)。
///
/// 计算查询结果语句
///
public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
//PrepareCommand(cmd, connection, null, ing, cmdParms);
PrepareCommand(cmd, connection, null, , SQLString,
cmdParms);
12 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
object obj = eScalar();
;
if (((obj, null)) || ((obj,
{
return null;
}
else
{
return obj;
}
}
catch ( e)
{
throw e;
}
}
}
}
#endregion
public static DataSet Query(string p, SqlParameter[] parameters)
{
throw new NotImplementedException();
}
public static DataSet Query(string p)
{
throw new NotImplementedException();
}
}
}
13
2023年6月21日发(作者:)
文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
// 文件
using System;
using ;
using uration;
using ;
using tions;
using ;
using tion;
//using ;
namespace
{
///
/// 数据库的通用访问代码
/// 此类为抽象类,不允许实例化,在应用时直接调用即可
///
public abstract class SqlHelper
{
#region Const
///
///DB连接串
///
private const string XPATH_CONNECTION_STRING = "SQLDBCon";
#endregion
//获取数据库连接字符串,其属于静态变量且只读,项目中所有文档可以直接使用,但不能修改
//public static readonly string ConnectionString =
tionStrings["Connection String"].ConnectionString;
public static readonly string ConnectionString = ;
// 哈希表用来存储缓存的参数信息,哈希表可以存储任意类型的参数。
private static Hashtable parmCache = onized(new Hashtable());
///
///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。
/// 使用参数数组形式提供参数列表
///
///
/// 使用示例:
/// int result = ExecuteNonQuery(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
1 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
public static int ExecuteNonQuery(string connectionString, CommandType cmdType, string
cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection conn = new SqlConnection(connectionString))
{
//通过PrePareCommand方法将参数逐个加入到SqlCommand的参数集合中
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
int val = eNonQuery();
//清空SqlCommand中的参数列表
;
return val;
}
}
///
///执行一条不返回结果的SqlCommand,通过一个已经存在的数据库连接
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// int result = ExecuteNonQuery(conn, Procedure, "PublishOrders",
new SqlParameter("@prodid", 24));
///
/// 一个现有的数据库连接
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
public static int ExecuteNonQuery(SqlConnection connection, CommandType cmdType, string
cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
int val = eNonQuery();
;
return val;
}
///
/// 执行一条不返回结果的SqlCommand,通过一个已经存在的数据库事物处理
/// 使用参数数组提供参数
///
///
/// 使用示例:
2 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
/// int result = ExecuteNonQuery(trans, Procedure, "PublishOrders",
new SqlParameter("@prodid", 24));
///
/// 一个存在的 sql 事物处理
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
/// SqlTransaction trans
public static int ExecuteNonQuery(SqlTransaction trans, CommandType cmdType, string
cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, tion, trans, cmdType, cmdText, commandParameters);
//insert
//insert
//int dds = eNonQuery(tion, ,
ng(), null);
int val = eNonQuery();
;
return val;
}
///
/// 执行一条返回结果集的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// SqlDataReader r = ExecuteReader(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
public static SqlDataReader ExecuteReader(string connectionString, CommandType cmdType,
string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
// 在这里使用try/catch处理是因为如果方法出现异常,则SqlDataReader就不存在,
3 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
//onnection的语句就不会执行,触发的异常由catch捕获。
//关闭数据库连接,并通过throw再次引发捕捉到的异常。
try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataReader rdr = eReader(onnection);
;
return rdr;
}
catch
{
();
throw;
}
}
///
/// 执行一条返回结果集的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// SqlDataReader r = ExecuteReader(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
public static DataTable ExecuteReaderToDataTable(string connectionString, CommandType
cmdType, string cmdText, params SqlParameter[] commandParameters)
{
return ConvertDataReaderToDataTable(ExecuteReader(connectionString, cmdType,
cmdText, commandParameters));
}
///
///
///
///
///
///
///
///
4 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
/// 查数据用
public static DataSet ExecuteDataset(string connectionString, CommandType cmdType,
string cmdText, params SqlParameter[] commandParameters)
{
//create a command and prepare it for execution
SqlCommand cmd = new SqlCommand();
SqlConnection conn = new SqlConnection(connectionString);
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
//create the DataAdapter & DataSet
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
//fill the DataSet using default values for DataTable names, etc.
(ds);
e();
// detach the OracleParameters from the command object, so they can be used again.
;
e();
//return the dataset
return ds;
}
///
/// 执行SQL语句,返回影响的记录数
///
/// SQL语句
///
public static int ExecuteSql(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
PrepareCommand(cmd, connection, null,, SQLString,
cmdParms);
int rows = eNonQuery();
;
return rows;
}
catch ( e)
{
throw e;
}
5 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
}
}
}
///
/// 执行一条返回第一条记录第一列的SqlCommand命令,通过专用的连接字符串。
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// Object obj = ExecuteScalar(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
///
public static object ExecuteScalar(string connectionString, CommandType cmdType, string
cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
using (SqlConnection connection = new SqlConnection(connectionString))
{
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = eScalar();
;
return val;
}
}
///
/// 执行一条返回第一条记录第一列的SqlCommand命令,通过已经存在的数据库连接。
/// 使用参数数组提供参数
///
///
/// 使用示例:
/// Object obj = ExecuteScalar(connString, Procedure,
"PublishOrders", new SqlParameter("@prodid", 24));
///
/// 一个已经存在的数据库连接
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表6 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
///
public static object ExecuteScalar(SqlConnection connection, CommandType cmdType,
string cmdText, params SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, connection, null, cmdType, cmdText, commandParameters);
object val = eScalar();
;
return val;
}
///
/// 缓存参数数组
///
/// 参数缓存的键值
/// 被缓存的参数列表
public static void CacheParameters(string cacheKey, params SqlParameter[]
commandParameters)
{
parmCache[cacheKey] = commandParameters;
}
///
/// 获取被缓存的参数
///
/// 用于查找参数的KEY值
///
public static SqlParameter[] GetCachedParameters(string cacheKey)
{
SqlParameter[] cachedParms = (SqlParameter[])parmCache[cacheKey];
if (cachedParms == null)
return null;
//新建一个参数的克隆列表
SqlParameter[] clonedParms = new SqlParameter[];
//通过循环为克隆参数列表赋值
for (int i = 0, j = ; i < j; i++)
//使用clone方法复制参数列表中的参数
clonedParms[i] = (SqlParameter)((ICloneable)cachedParms[i]).Clone();
return clonedParms;
}
///
/// 为执行命令准备参数
///
/// SqlCommand 命令
7 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
/// 已经存在的数据库连接
/// 数据库事物处理
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// Command text,T-SQL语句 例如 Select * from Products
/// 返回带参数的命令
private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction
trans, CommandType cmdType, string cmdText, SqlParameter[] cmdParms)
{
//判断数据库连接状态
if ( != )
();
tion = conn;
dText = cmdText;
//判断是否需要事物处理
if (trans != null)
ction = trans;
dType = cmdType;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
;
}
}
///
/// 开始数据库事务
///
///
///
public static SqlTransaction BeginTransaction(string connectionString)
{
SqlConnection conn = new SqlConnection(connectionString);
//判断数据库连接状态
if ( != )
();
return ransaction();
}
///
/// 提交事务
///
///
public static void CommitTransaction(SqlTransaction transaction)
{
SqlConnection conn = tion;
();
8 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
();
}
///
/// 回滚事务
///
///
public static void RollbackTransaction(SqlTransaction transaction)
{
SqlConnection conn = tion;
ck();
();
}
public static SqlParameter[] CreateParameters(object Object)
{
Type type = e();
PropertyInfo[] properties = perties();
SqlParameter[] Parameters = new SqlParameter[];
for (int i = 0; i < ; i++)
{
PropertyInfo property = (PropertyInfo)properties[i];
Parameters[i] = new SqlParameter("@" + , ue(Object,
null));
}
return Parameters;
}
public static DataTable ConvertDataReaderToDataTable(IDataReader reader)
{
DataTable objDataTable = new DataTable();//创建一个DataTable对象
int intFieldCount = ount;
//为DataTable对象添加对应的列字段信息
for (int intCounter = 0; intCounter < intFieldCount; ++intCounter)
{
, ldType(intCounter));
}
oadData();
object[] objValues = new object[intFieldCount];
//逐行读取SqlDataReader对象中每一行数据
//并把数据添加到对象dataTable中
while (())
{
ues(objValues);
taRow(objValues, true);
}
///关闭数据读取器
9 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
();
dData();
return objDataTable;//返回一个DataTable对象
}
///
/// 用DataTable对象的数据批量更新数据表
///
/// DataTable对象
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// Command text,T-SQL语句 例如 Select * from Products
/// 返回带参数的命令
/*
========================================================================================
更新记录
番号 更新日期 更新者
0001 2011/06/17
========================================================================================= */
public static int UpdateByDataTable(DataTable table, CommandType cmdType, string cmdText,
SqlParameter[] cmdParms)
{
SqlTransaction trans =null;
try
{
if (table == null || <= 0)
{
return -1;
}
string strConnectionString = ; ;
//事务启动
trans = BeginTransaction(strConnectionString);
//SQL命令的创建
SqlCommand cmd = new SqlCommand();
PrepareCommand(cmd, tion, trans, cmdType, cmdText, cmdParms);
SqlDataAdapter objAdapter = new SqlDataAdapter(cmd);
SqlCommandBuilder sqlCommandBuilder = new SqlCommandBuilder(objAdapter);
int intR = (table);
CommitTransaction(trans);
return intR;
}
catch (Exception ex)
{
if(trans!=null)
{
更新内容
S 新 建
10 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
RollbackTransaction(trans);
}
throw ex;
}
}
#region 公用方法
public static int GetMaxID(string FieldName, string TableName)
{
string strsql = "select max(" + FieldName + ")+1 from " + TableName;
object obj = GetSingle(strsql);
if (obj == null)
{
return 1;
}
else
{
return (ng());
}
}
///
/// 执行一条计算查询结果语句,返回查询结果(object)。
///
/// 计算查询结果语句
///
public static object GetSingle(string SQLString)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
();
object obj = eScalar();
if (((obj, null)) || ((obj,
{
return null;
}
else
{
return obj;
}
}
catch ( e)
11 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
{
();
throw e;
}
}
}
}
public static bool Exists(string strSql, params SqlParameter[] cmdParms)
{
object obj = GetSingle(strSql, cmdParms);
int cmdresult;
if (((obj, null)) || ((obj,
{
cmdresult = 0;
}
else
{
cmdresult = (ng());
}
if (cmdresult == 0)
{
return false;
}
else
{
return true;
}
}
///
/// 执行一条计算查询结果语句,返回查询结果(object)。
///
/// 计算查询结果语句
///
public static object GetSingle(string SQLString, params SqlParameter[] cmdParms)
{
using (SqlConnection connection = new SqlConnection(ConnectionString))
{
using (SqlCommand cmd = new SqlCommand())
{
try
{
//PrepareCommand(cmd, connection, null, ing, cmdParms);
PrepareCommand(cmd, connection, null, , SQLString,
cmdParms);
12 文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持.
object obj = eScalar();
;
if (((obj, null)) || ((obj,
{
return null;
}
else
{
return obj;
}
}
catch ( e)
{
throw e;
}
}
}
}
#endregion
public static DataSet Query(string p, SqlParameter[] parameters)
{
throw new NotImplementedException();
}
public static DataSet Query(string p)
{
throw new NotImplementedException();
}
}
}
13
发布评论