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命令中用到的参数列表

/// 返回一个数值表示此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命令中用到的参数列表

/// 返回一个数值表示此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命令中用到的参数列表

/// 返回一个数值表示此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命令中用到的参数列表

/// 返回一个包含结果的SqlDataReader

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命令中用到的参数列表

/// 返回一个包含结果的DataTable

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命令中用到的参数列表

/// 返回一个object类型的数据,可以通过 {Type}方法转换类型

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版本可编辑.欢迎下载支持.

/// 返回一个object类型的数据,可以通过 {Type}方法转换类型

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)。

///

/// 计算查询结果语句

/// 查询结果(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)。

///

/// 计算查询结果语句

/// 查询结果(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命令中用到的参数列表

/// 返回一个数值表示此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命令中用到的参数列表

/// 返回一个数值表示此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命令中用到的参数列表

/// 返回一个数值表示此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命令中用到的参数列表

/// 返回一个包含结果的SqlDataReader

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命令中用到的参数列表

/// 返回一个包含结果的DataTable

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命令中用到的参数列表

/// 返回一个object类型的数据,可以通过 {Type}方法转换类型

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版本可编辑.欢迎下载支持.

/// 返回一个object类型的数据,可以通过 {Type}方法转换类型

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)。

///

/// 计算查询结果语句

/// 查询结果(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)。

///

/// 计算查询结果语句

/// 查询结果(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