zoukankan
html css js c++ java
sqlHelper
using
System;
using
System.Configuration;
using
System.Data;
using
System.Data.SqlClient;
using
System.Collections;
/**/
///
<summary>
///
The SqlHelper class is intended to encapsulate high performance,
///
scalable best practices for common uses of SqlClient.
///
</summary>
public
abstract
class
SqlHelper
...
{
//
Database connection strings
public
static
readonly
string
strConnection
=
ConfigurationManager.ConnectionStrings[
"
ConnectionString1
"
].ConnectionString;
//
public static readonly string ConnectionStringInventoryDistributedTransaction = ConfigurationManager.ConnectionStrings["SQLConnString2"].ConnectionString;
//
public static readonly string ConnectionStringOrderDistributedTransaction = ConfigurationManager.ConnectionStrings["SQLConnString3"].ConnectionString;
//
public static readonly string ConnectionStringProfile = ConfigurationManager.ConnectionStrings["SQLProfileConnString"].ConnectionString;
//
Hashtable to store cached parameters
private
static
Hashtable parmCache
=
Hashtable.Synchronized(
new
Hashtable());
ExecuteNonQuery
#region
ExecuteNonQuery
/**/
///
<summary>
///
Execute a SqlCommand (that returns no resultset) against the database specified in the connection string
///
using the provided parameters.
///
</summary>
///
<remarks>
///
e.g.:
///
int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
///
</remarks>
///
<param name="connectionString">
a valid connection string for a SqlConnection
</param>
///
<param name="commandType">
the CommandType (stored procedure, text, etc.)
</param>
///
<param name="commandText">
the stored procedure name or T-SQL command
</param>
///
<param name="commandParameters">
an array of SqlParamters used to execute the command
</param>
///
<returns>
an int representing the number of rows affected by the command
</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>
///
<param name="cmdType">
命令文本类型
</param>
///
<param name="cmdText">
命令文本
</param>
///
<param name="commandParameters">
参数集
</param>
///
<returns>
int
</returns>
public
static
int
ExecuteNonQuery(CommandType cmdType,
string
cmdText,
params
SqlParameter[] commandParameters)
...
{
SqlCommand cmd
=
new
SqlCommand();
using
(SqlConnection conn
=
new
SqlConnection(strConnection))
...
{
PrepareCommand(cmd, conn,
null
, cmdType, cmdText, commandParameters);
int
val
=
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return
val;
}
}
/**/
///
<summary>
///
使用默认连接,CommandType默认为StoredProcedure
///
</summary>
///
<param name="cmdText">
存储过程名
</param>
///
<param name="commandParameters">
参数集
</param>
///
<returns>
int
</returns>
public
static
int
ExecuteNonQuery(
string
cmdText,
params
SqlParameter[] commandParameters)
...
{
SqlCommand cmd
=
new
SqlCommand();
using
(SqlConnection conn
=
new
SqlConnection(strConnection))
...
{
PrepareCommand(cmd, conn,
null
, CommandType.StoredProcedure,cmdText, commandParameters);
int
val
=
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return
val;
}
}
/**/
///
<summary>
///
Execute a SqlCommand (that returns no resultset) against an existing database connection
///
using the provided parameters.
///
</summary>
///
<remarks>
///
e.g.:
///
int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
///
</remarks>
///
<param name="conn">
an existing database connection
</param>
///
<param name="commandType">
the CommandType (stored procedure, text, etc.)
</param>
///
<param name="commandText">
the stored procedure name or T-SQL command
</param>
///
<param name="commandParameters">
an array of SqlParamters used to execute the command
</param>
///
<returns>
an int representing the number of rows affected by the command
</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>
///
Execute a SqlCommand (that returns no resultset) using an existing SQL Transaction
///
using the provided parameters.
///
</summary>
///
<remarks>
///
e.g.:
///
int result = ExecuteNonQuery(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
///
</remarks>
///
<param name="trans">
an existing sql transaction
</param>
///
<param name="commandType">
the CommandType (stored procedure, text, etc.)
</param>
///
<param name="commandText">
the stored procedure name or T-SQL command
</param>
///
<param name="commandParameters">
an array of SqlParamters used to execute the command
</param>
///
<returns>
an int representing the number of rows affected by the command
</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>
///
Execute a SqlCommand that returns a resultset against the database specified in the connection string
///
using the provided parameters.
///
</summary>
///
<remarks>
///
e.g.:
///
SqlDataReader r = ExecuteReader(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
///
</remarks>
///
<param name="connectionString">
a valid connection string for a SqlConnection
</param>
///
<param name="commandType">
the CommandType (stored procedure, text, etc.)
</param>
///
<param name="commandText">
the stored procedure name or T-SQL command
</param>
///
<param name="commandParameters">
an array of SqlParamters used to execute the command
</param>
///
<returns>
A SqlDataReader containing the results
</returns>
#endregion
ExecuteReader
#region
ExecuteReader
public
static
SqlDataReader ExecuteReader(
string
connectionString, CommandType cmdType,
string
cmdText,
params
SqlParameter[] commandParameters)
...
{
SqlCommand cmd
=
new
SqlCommand();
SqlConnection conn
=
new
SqlConnection(connectionString);
//
we use a try/catch here because if the method throws an exception we want to
//
close the connection throw code, because no datareader will exist, hence the
//
commandBehaviour.CloseConnection will not work
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>
///
<param name="cmdType">
命令文本类型
</param>
///
<param name="cmdText">
命令文本
</param>
///
<param name="commandParameters">
参数集
</param>
///
<returns>
SqlDataReader
</returns>
public
static
SqlDataReader ExecuteReader(CommandType cmdType,
string
cmdText,
params
SqlParameter[] commandParameters)
...
{
SqlCommand cmd
=
new
SqlCommand();
SqlConnection conn
=
new
SqlConnection(strConnection);
//
we use a try/catch here because if the method throws an exception we want to
//
close the connection throw code, because no datareader will exist, hence the
//
commandBehaviour.CloseConnection will not work
try
...
{
PrepareCommand(cmd, conn,
null
, cmdType, cmdText, commandParameters);
SqlDataReader rdr
=
cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return
rdr;
}
catch
...
{
conn.Close();
throw
;
}
}
/**/
///
<summary>
///
使用默认连接,CommandType默认为StoredProcedure
///
</summary>
///
<param name="cmdText">
存储过程名
</param>
///
<param name="commandParameters">
参数集
</param>
///
<returns>
SqlDataReader
</returns>
public
static
SqlDataReader ExecuteReader(
string
cmdText,
params
SqlParameter[] commandParameters)
...
{
SqlCommand cmd
=
new
SqlCommand();
SqlConnection conn
=
new
SqlConnection(strConnection);
//
we use a try/catch here because if the method throws an exception we want to
//
close the connection throw code, because no datareader will exist, hence the
//
commandBehaviour.CloseConnection will not work
try
...
{
PrepareCommand(cmd, conn,
null
, CommandType.StoredProcedure, cmdText, commandParameters);
SqlDataReader rdr
=
cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();
return
rdr;
}
catch
...
{
conn.Close();
throw
;
}
}
#endregion
ExecuteScalar
#region
ExecuteScalar
/**/
///
<summary>
///
Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string
///
using the provided parameters.
///
</summary>
///
<remarks>
///
e.g.:
///
Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
///
</remarks>
///
<param name="connectionString">
a valid connection string for a SqlConnection
</param>
///
<param name="commandType">
the CommandType (stored procedure, text, etc.)
</param>
///
<param name="commandText">
the stored procedure name or T-SQL command
</param>
///
<param name="commandParameters">
an array of SqlParamters used to execute the command
</param>
///
<returns>
An object that should be converted to the expected type using Convert.To{Type}
</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>
///
<param name="cmdType">
命令文本类型
</param>
///
<param name="cmdText">
命令文本
</param>
///
<param name="commandParameters">
参数集
</param>
///
<returns>
object
</returns>
public
static
object
ExecuteScalar(CommandType cmdType,
string
cmdText,
params
SqlParameter[] commandParameters)
...
{
SqlCommand cmd
=
new
SqlCommand();
using
(SqlConnection connection
=
new
SqlConnection(strConnection))
...
{
PrepareCommand(cmd, connection,
null
, cmdType, cmdText, commandParameters);
object
val
=
cmd.ExecuteScalar();
cmd.Parameters.Clear();
return
val;
}
}
/**/
///
<summary>
///
使用定义好的连接字符串,CommandType默认为StoredProcedure
///
</summary>
///
<param name="cmdText">
存储过程名
</param>
///
<param name="commandParameters">
参数集
</param>
///
<returns>
object
</returns>
public
static
object
ExecuteScalar(
string
cmdText,
params
SqlParameter[] commandParameters)
...
{
SqlCommand cmd
=
new
SqlCommand();
using
(SqlConnection connection
=
new
SqlConnection(strConnection))
...
{
PrepareCommand(cmd, connection,
null
, CommandType.StoredProcedure, cmdText, commandParameters);
object
val
=
cmd.ExecuteScalar();
cmd.Parameters.Clear();
return
val;
}
}
/**/
///
<summary>
///
Execute a SqlCommand that returns the first column of the first record against an existing database connection
///
using the provided parameters.
///
</summary>
///
<remarks>
///
e.g.:
///
Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24));
///
</remarks>
///
<param name="conn">
an existing database connection
</param>
///
<param name="commandType">
the CommandType (stored procedure, text, etc.)
</param>
///
<param name="commandText">
the stored procedure name or T-SQL command
</param>
///
<param name="commandParameters">
an array of SqlParamters used to execute the command
</param>
///
<returns>
An object that should be converted to the expected type using Convert.To{Type}
</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;
}
#endregion
ExecuteDataSet
#region
ExecuteDataSet
/**/
///
<summary>
///
返加dataset
///
</summary>
///
<param name="connectionString">
连接字符串
</param>
///
<param name="cmdType">
命令类型,如StoredProcedure,Text
</param>
///
<param name="cmdText">
the stored procedure name or T-SQL command
</param>
///
<returns>
DataSet
</returns>
public
static
DataSet ExecuteDataSet(
string
connectionString, CommandType cmdType,
string
cmdText)
...
{
SqlConnection SqlDataConn
=
new
SqlConnection(connectionString);
SqlCommand SqlComm
=
new
SqlCommand(cmdText, SqlDataConn);
SqlComm.CommandType
=
cmdType;
SqlDataAdapter SqlDA
=
new
SqlDataAdapter(SqlComm);
DataSet DS
=
new
DataSet();
SqlDA.Fill(DS);
return
DS;
}
/**/
///
<summary>
///
使用定义好的连接字符串
///
</summary>
///
<param name="cmdType">
命令文本类型
</param>
///
<param name="cmdText">
命令文本
</param>
///
<returns>
DataSet
</returns>
public
static
DataSet ExecuteDataSet(CommandType cmdType,
string
cmdText)
...
{
SqlConnection SqlDataConn
=
new
SqlConnection(strConnection);
SqlCommand SqlComm
=
new
SqlCommand(cmdText, SqlDataConn);
SqlComm.CommandType
=
cmdType;
SqlDataAdapter SqlDA
=
new
SqlDataAdapter(SqlComm);
DataSet DS
=
new
DataSet();
SqlDA.Fill(DS);
return
DS;
}
/**/
///
<summary>
///
使用定义好的连接字符串,CommandType默认为StoredProcedure
///
</summary>
///
<param name="cmdText">
存储过程名
</param>
///
<returns>
object
</returns>
public
static
DataSet ExecuteDataSet(
string
cmdText)
...
{
SqlConnection SqlDataConn
=
new
SqlConnection(strConnection);
SqlCommand SqlComm
=
new
SqlCommand(cmdText, SqlDataConn);
SqlComm.CommandType
=
CommandType.StoredProcedure;
SqlDataAdapter SqlDA
=
new
SqlDataAdapter(SqlComm);
DataSet DS
=
new
DataSet();
SqlDA.Fill(DS);
return
DS;
}
/**/
///
<summary>
///
返加dataset
///
</summary>
///
<param name="connectionString">
连接字符串
</param>
///
<param name="cmdType">
命令类型,如StoredProcedure,Text
</param>
///
<param name="cmdText">
the stored procedure name or T-SQL command
</param>
///
<param name="SQLparams">
参数集
</param>
///
<returns>
DataSet
</returns>
public
static
DataSet ExecuteDataSet(
string
connectionString, CommandType cmdType,
string
cmdText,
params
SqlParameter[] SQLparams)
...
{
SqlConnection SqlDataConn
=
new
SqlConnection(connectionString);
SqlCommand SqlComm
=
AddSqlParas(SQLparams, cmdText, cmdType, SqlDataConn);
SqlDataAdapter SqlDA
=
new
SqlDataAdapter(SqlComm);
DataSet DS
=
new
DataSet();
SqlDA.Fill(DS);
return
DS;
}
public
static
DataSet ExecuteDataSet( CommandType cmdType,
string
cmdText,
params
SqlParameter[] SQLparams)
...
{
SqlConnection SqlDataConn
=
new
SqlConnection(strConnection);
SqlCommand SqlComm
=
AddSqlParas(SQLparams, cmdText, cmdType, SqlDataConn);
SqlDataAdapter SqlDA
=
new
SqlDataAdapter(SqlComm);
DataSet DS
=
new
DataSet();
SqlDA.Fill(DS);
return
DS;
}
/**/
///
<summary>
///
使用定义好的连接字符串,CommandType默认为StoredProcedure
///
</summary>
///
<param name="cmdText">
存储过程名
</param>
///
<param name="commandParameters">
参数集
</param>
///
<returns>
DataSet
</returns>
public
static
DataSet ExecuteDataSet(
string
cmdText,
params
SqlParameter[] SQLparams)
...
{
SqlConnection SqlDataConn
=
new
SqlConnection(strConnection);
SqlCommand SqlComm
=
AddSqlParas(SQLparams,cmdText,CommandType.StoredProcedure, SqlDataConn);
SqlDataAdapter SqlDA
=
new
SqlDataAdapter(SqlComm);
DataSet DS
=
new
DataSet();
SqlDA.Fill(DS);
return
DS;
}
#endregion
CacheParameters
#region
CacheParameters
/**/
///
<summary>
///
add parameter array to the cache
///
</summary>
///
<param name="cacheKey">
Key to the parameter cache
</param>
///
<param name="cmdParms">
an array of SqlParamters to be cached
</param>
public
static
void
CacheParameters(
string
cacheKey,
params
SqlParameter[] commandParameters)
...
{
parmCache[cacheKey]
=
commandParameters;
}
#endregion
GetCachedParameters
#region
GetCachedParameters
/**/
///
<summary>
///
Retrieve cached parameters
///
</summary>
///
<param name="cacheKey">
key used to lookup parameters
</param>
///
<returns>
Cached SqlParamters array
</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;
}
#endregion
PrepareCommand
#region
PrepareCommand
/**/
///
<summary>
///
Prepare a command for execution
///
</summary>
///
<param name="cmd">
SqlCommand object
</param>
///
<param name="conn">
SqlConnection object
</param>
///
<param name="trans">
SqlTransaction object
</param>
///
<param name="cmdType">
Cmd type e.g. stored procedure or text
</param>
///
<param name="cmdText">
Command text, e.g. Select * from Products
</param>
///
<param name="cmdParms">
SqlParameters to use in the command
</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);
}
}
#endregion
AddSqlParas
#region
AddSqlParas
/**/
///
<summary>
///
获得一个完整的Command
///
</summary>
///
<param name="SqlParas">
SQL的参数数组
</param>
///
<param name="CommandText">
命令文本
</param>
///
<param name="IsStoredProcedure">
命令文本是否是存储过程
</param>
///
<param name="SqlDataConn">
数据连接
</param>
///
<returns></returns>
private
static
SqlCommand AddSqlParas(SqlParameter[] SqlParas,
string
cmdText, CommandType cmdType, SqlConnection SqlDataConn)
...
{
SqlCommand SqlComm
=
new
SqlCommand(cmdText, SqlDataConn);
SqlComm.CommandType
=
cmdType;
if
(SqlParas
!=
null
)
...
{
foreach
(SqlParameter p
in
SqlParas)
...
{
SqlComm.Parameters.Add(p);
}
}
return
SqlComm;
}
#endregion
}
查看全文
相关阅读:
安装rqalpha的日志
从github上下载一个csv文件
PyQt4 里的表格部件的使用方法: QTableWidget
markdown里的多层次列表项
打包python脚本为exe的坎坷经历, by pyinstaller方法
Spyder docstrings文档字符串的标准
Plot Candlestick Charts in Research of quantopian
另类之将ipython notebook嵌入blog方法
Jupyter Notebook Tutorial: Introduction, Setup, and Walkthrough
爬虫视频讲座
原文地址:https://www.cnblogs.com/zijinguang/p/1234769.html
最新文章
Invert Binary Tree
Path Sum,Path Sum II
Same Tree
Symmetric Tree
Binary Tree Level Order Traversal,Binary Tree Level Order Traversal II
Minimum Depth of Binary Tree
Maximum Depth of Binary Tree
Balanced Binary Tree
Bitwise AND of Numbers Range
Maximum Product of Word Lengths
热门文章
Avro总结(RPC/序列化)
Flume环境部署和配置详解及案例大全
haproxy 配置 说明
解决svn Key usage violation in certificate has been detected
ubuntu 源码安装 lnmp 环境
CentOS编译安装LNMP环境
高性能Web服务器Nginx的配置与部署研究(16)小议location匹配模式优先级
高性能Web服务器Nginx的配置与部署研究(15)Upstream负载均衡模块
高性能Web服务器Nginx的配置与部署研究(14)平滑升级你的Nginx
高性能Web服务器Nginx的配置与部署研究(13)应用模块之Memcached模块+Proxy_Cache双层缓存模式
Copyright © 2011-2022 走看看