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);
}
}
}
查看全文
相关阅读:
范仁义js课程---59、this
javascript疑难问题---9、闭包执行问题
jetbrains
React-Native首次运行提示-ReferenceError-Can-t-find-variable-fbBatchedBridge
visual studio 2015提示IE10未安装
【转】在Windows下搭建React Native Android开发环境
Android Studio 简单设置
【转】Spring 4.x实现Restful web service
SecureCRT 终端仿真程序 v7.0.0.326 中文绿色便携破解版
《Spring技术内幕》学习笔记17——Spring HTTP调用器实现远程调用
原文地址:https://www.cnblogs.com/leeolevis/p/1383084.html
最新文章
数据切分——Atlas读写分离Mysql集群的搭建
Codeforces 435B. Pasha Maximizes
Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法
jQuery中append、insertBefore、after与insertAfter方法注意事项
在eclipse里如何快速定位到某一行?
document.mozFullScreen
MVVM
MVC,MVP 和 MVVM 的图示
HTML/CSS开发规范指南
(转) Arcgis for Javascript实现两个地图的联动
热门文章
(转) Arcgis4js实现链家找房的效果
jstree CHECKBOX PLUGIN
sass与less的区别?Stylus又是啥?
Postman 介绍
vue参考---Vue 扩展插件
心得体悟帖---200311(方针:录可以收费的高技术课程)
心得体悟帖---200311(明确legend3主要是为了自己,那么PHP基础课和基础框架课不用录,可以直接着眼于网站的优化以及大数据和高并发)
laravel疑难问题---3、laravel如何格式化分页数据
legend3---laravel如何格式化分页数据
范仁义js课程---60、this的作用
Copyright © 2011-2022 走看看