zoukankan
html css js c++ java
SqlHelper 类
using
System;
using
System.Configuration;
using
System.Data;
using
System.Data.SqlClient;
using
System.Collections;
/**/
///
<summary>
///
SqlHelper类提供很高的数据访问性能,
///
使用SqlClient类的通用定义.
///
</summary>
public
abstract
class
SqlHelper
{
//
定义数据库连接串
public
static
readonly
string
ConnectionStringLocalTransaction
=
ConfigurationManager.ConnectionStrings[
"
ExamConnectionString
"
].ConnectionString;
//
public static readonly string ConnectionStringInventoryDistributedTransaction =
ConfigurationManager.ConnectionStrings[
"
SQLConnString1
"
].ConnectionString;
//
public static readonly string ConnectionStringOrderDistributedTransaction =
ConfigurationManager.ConnectionStrings[
"
SQLConnString3
"
].ConnectionString;
//
public static readonly string ConnectionStringProfile =
ConfigurationManager.ConnectionStrings[
"
SQLProfileConnString
"
].ConnectionString;
//
存贮Cache缓存的Hashtable集合
private
static
Hashtable parmCache
=
Hashtable.Synchronized(
new
Hashtable());
/**/
///
<summary>
///
使用连接字符串,执行一个SqlCommand命令(没有记录返回)
///
使用提供的参数集.
///
</summary>
///
<remarks>
///
示例:
///
int result = ExecuteNonQuery(connString, CommandType.StoredProcedure,
"
PublishOrders
"
,
new
SqlParameter(
"
@prodid
"
,
24
));
/**/
///
</remarks>
///
<param name="connectionString">
一个有效的SqlConnection连接串
</param>
///
<param name="commandType">
命令类型CommandType(stored procedure, text, etc.)
</param>
///
<param name="commandText">
存贮过程名称或是一个T-SQL语句串
</param>
///
<param name="commandParameters">
执行命令的参数集
</param>
///
<returns>
受此命令影响的行数
</returns>
public
static
int
ExecuteNonQuery(
string
connectionString, CommandType cmdType,
string
cmdText,
params
SqlParameter[] commandParameters)
{
SqlCommand cmd
=
new
SqlCommand();
using
(SqlConnection conn
=
new
SqlConnection(connectionString))
{
PrepareCommand(cmd, conn,
null
, cmdType, cmdText, commandParameters);
int
val
=
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return
val;
}
}
/**/
///
<summary>
///
在一个存在的连接上执行数据库的命令操作
///
使用提供的参数集.
///
</summary>
///
<remarks>
///
e.g.:
///
int result = ExecuteNonQuery(connection, CommandType.StoredProcedure,
"
PublishOrders
"
,
new
SqlParameter(
"
@prodid
"
,
24
));
/**/
///
</remarks>
///
<param name="conn">
一个存在的数据库连接对象
</param>
///
<param name="commandType">
命令类型CommandType (stored procedure, text, etc.)
</param>
///
<param name="commandText">
存贮过程名称或是一个T-SQL语句串
</param>
///
<param name="commandParameters">
执行命令的参数集
</param>
///
<returns>
受此命令影响的行数
</returns>
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
=
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return
val;
}
/**/
///
<summary>
///
在一个事务的连接上执行数据库的命令操作
///
使用提供的参数集.
///
</summary>
///
<remarks>
///
e.g.:
///
int result = ExecuteNonQuery(trans, CommandType.StoredProcedure, "PublishOrders", new
SqlParameter(
"
@prodid
"
,
24
));
/**/
///
</remarks>
///
<param name="trans">
一个存在的事务
</param>
///
<param name="commandType">
命令类型CommandType (stored procedure, text, etc.)
</param>
///
<param name="commandText">
存贮过程名称或是一个T-SQL语句串
</param>
///
<param name="commandParameters">
执行命令的参数集
</param>
///
<returns>
受此命令影响的行数
</returns>
public
static
int
ExecuteNonQuery(SqlTransaction trans, CommandType cmdType,
string
cmdText,
params
SqlParameter[] commandParameters)
{
SqlCommand cmd
=
new
SqlCommand();
PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, commandParameters);
int
val
=
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return
val;
}
/**/
///
<summary>
///
在一个连接串上执行一个命令,返回一个SqlDataReader对象
///
使用提供的参数.
///
</summary>
///
<remarks>
///
e.g.:
///
SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure,
"
PublishOrders
"
,
new
SqlParameter(
"
@prodid
"
,
24
));
/**/
///
</remarks>
///
<param name="connectionString">
一个有效的SqlConnection连接串
</param>
///
<param name="commandType">
命令类型CommandType(stored procedure, text, etc.)
</param>
///
<param name="commandText">
存贮过程名称或是一个T-SQL语句串
</param>
///
<param name="commandParameters">
执行命令的参数集
</param>
///
<returns>
一个结果集对象SqlDataReader
</returns>
public
static
SqlDataReader ExecuteReader(
string
connectionString, CommandType cmdType,
string
cmdText,
params
SqlParameter[] commandParameters)
{
SqlCommand cmd
=
new
SqlCommand();
SqlConnection conn
=
new
SqlConnection(connectionString);
//
如果不存在要查询的对象,则发生异常
//
连接要关闭
//
CommandBehavior.CloseConnection在异常时不发生作用
try
{
PrepareCommand(cmd, conn,
null
, cmdType, cmdText, commandParameters);
SqlDataReader rdr
=
cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return
rdr;
}
catch
{
conn.Close();
throw
;
}
}
/**/
///
<summary>
///
在一个连接串上执行一个命令,返回表中第一行,第一列的值
///
使用提供的参数.
///
</summary>
///
<remarks>
///
e.g.:
///
Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders",
new
SqlParameter(
"
@prodid
"
,
24
));
/**/
///
</remarks>
///
<param name="connectionString">
一个有效的SqlConnection连接串
</param>
///
<param name="commandType">
命令类型CommandType(stored procedure, text, etc.)
</param>
///
<param name="commandText">
存贮过程名称或是一个T-SQL语句串
</param>
///
<param name="commandParameters">
执行命令的参数集
</param>
///
<returns>
返回的对
象,在使用时记得类型转换
</
returns
>
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
=
cmd.ExecuteScalar();
cmd.Parameters.Clear();
return
val;
}
}
/**/
///
<summary>
///
在一个连接上执行一个命令,返回表中第一行,第一列的值
///
使用提供的参数.
///
</summary>
///
<remarks>
///
e.g.:
///
Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders",
new
SqlParameter(
"
@prodid
"
,
24
));
/**/
///
</remarks>
///
<param name="connectionString">
一个有效的SqlConnection连接
</param>
///
<param name="commandType">
命令类型CommandType(stored procedure, text, etc.)
</param>
///
<param name="commandText">
存贮过程名称或是一个T-SQL语句串
</param>
///
<param name="commandParameters">
执行命令的参数集
</param>
///
<returns>
返回的对
象,在使用时记得类型转换
</
returns
>
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
=
cmd.ExecuteScalar();
cmd.Parameters.Clear();
return
val;
}
/**/
///
<summary>
///
在缓存中添加参数数组
///
</summary>
///
<param name="cacheKey">
参数的Key
</param>
///
<param name="cmdParms">
参数数组
</param>
public
static
void
CacheParameters(
string
cacheKey,
params
SqlParameter[]
commandParameters)
{
parmCache[cacheKey]
=
commandParameters;
}
/**/
///
<summary>
///
提取缓存的参数数组
///
</summary>
///
<param name="cacheKey">
查找缓存的key
</param>
///
<returns>
返回被缓存的参数数组
</returns>
public
static
SqlParameter[] GetCachedParameters(
string
cacheKey)
{
SqlParameter[] cachedParms
=
(SqlParameter[])parmCache[cacheKey];
if
(cachedParms
==
null
)
return
null
;
SqlParameter[] clonedParms
=
new
SqlParameter[cachedParms.Length];
for
(
int
i
=
0
, j
=
cachedParms.Length; i
<
j; i
++
)
clonedParms[i]
=
(SqlParameter)((ICloneable)cachedParms[i]).Clone();
return
clonedParms;
}
/**/
///
<summary>
///
提供一个SqlCommand对象的设置
///
</summary>
///
<param name="cmd">
SqlCommand对象
</param>
///
<param name="conn">
SqlConnection 对象
</param>
///
<param name="trans">
SqlTransaction 对象
</param>
///
<param name="cmdType">
CommandType 如存贮过程,T-SQL
</param>
///
<param name="cmdText">
存贮过程名或查询串
</param>
///
<param name="cmdParms">
命令中用到的参数集
</param>
private
static
void
PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction
trans, CommandType cmdType,
string
cmdText, SqlParameter[] cmdParms)
{
if
(conn.State
!=
ConnectionState.Open)
conn.Open();
cmd.Connection
=
conn;
cmd.CommandText
=
cmdText;
if
(trans
!=
null
)
cmd.Transaction
=
trans;
cmd.CommandType
=
cmdType;
if
(cmdParms
!=
null
)
{
foreach
(SqlParameter parm
in
cmdParms)
cmd.Parameters.Add(parm);
}
}
}
查看全文
相关阅读:
Prometheus+mysql+grafana
Ant+JMeter+Jenkins接口自动化平台搭建
MySQL配置文件my.cnf的解析
jmeter上传图片接口+下载文件接口
python 正则表达式
Python接口自动化基础---cookie绕过登录
Python接口自动化基础---token鉴权
Python接口自动化基础---session关联接口
Python接口自动化基础---post请求
Python接口自动化基础---get请求
原文地址:https://www.cnblogs.com/yiki/p/751017.html
最新文章
深入解析RecyclerView 源码——绘制流程、缓存机制、动画等
RecyclerView 性能优化
Android 小技巧之 RecyclerView
Android 小技巧之二级列表
程序性能优化之内存优化(三)下篇
程序性能优化之内存优化(三)中篇
程序性能优化之内存优化(三)上篇
RecycleView和ListView
如何将多个选择添加到Android RecyclerView
深入理解Android中的缓存机制(二)RecyclerView跟ListView缓存机制对比
热门文章
AndroidX对ViewPager懒加载的影响及解决方案
深入解析RecyclerView 源码——绘制流程、缓存机制、动画等
Android自定义ListView下拉刷新与上拉加载
RecyclerView回收和复用机制分析
[Android]从一个简单的AIDL实现看binder原理(二)bindService的调用过程
[Android]从一个简单的AIDL实现看binder原理(一)简单的AIDL实现
[Android]从一个简单的AIDL实现看binder原理(三)bindService调用过程中Binder的传递
[Android]从一个简单的AIDL实现看binder原理(四)bindService调用过程中Binder的写入
gitlab搭建后邮件服务设置
Python学习系列之元组(十五)
Copyright © 2011-2022 走看看