public class SqlHelper
{ ///
/// 数据库连接字符串 ///
public static readonly string connectionString = ConfigurationManager.ConnectionStrings["xmgl"].ToString(); // Hashtable to store cached parameters
#region
///
///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。 /// 使用参数数组形式提供参数列表
///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个数值表示此SqlCommand命令执行后影响的行数
public static int ExecteNonQuery(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 = cmd.ExecuteNonQuery(); //清空SqlCommand中的参数列表 cmd.Parameters.Clear(); return val;
}
} ///
///执行一个不需要返回值的SqlCommand命令,通过指定专用的连接字符串。 /// 使用参数数组形式提供参数列表
///
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个数值表示此SqlCommand命令执行后影响的行数
public static int ExecteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{ return ExecteNonQuery(connectionString, cmdType, cmdText, commandParameters);
} ///
///存储过程专用 ///
/// 存储过程的名字
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个数值表示此SqlCommand命令执行后影响的行数
public static int ExecteNonQueryProducts(string cmdText, params SqlParameter[] commandParameters)
{ return ExecteNonQuery(CommandType.StoredProcedure, cmdText, commandParameters);
} ///
///Sql语句专用 ///
/// T_Sql语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个数值表示此SqlCommand命令执行后影响的行数
public static int ExecteNonQueryText(string cmdText, params SqlParameter[] commandParameters)
{ return ExecteNonQuery(CommandType.Text, cmdText, commandParameters);
} #endregion
#region//GetTable方法
///
/// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接 /// 使用参数数组提供参数 ///
/// 一个现有的数据库连接
/// SqlCommand命令类型
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个表集合(DataTableCollection)表示查询得到的数据集
public static DataTableCollection GetTable(string connecttionString, CommandType cmdTye, string cmdText, SqlParameter[] commandParameters)
{
SqlCommand cmd = new SqlCommand();
DataSet ds = new DataSet(); using (SqlConnection conn = new SqlConnection(connecttionString))
{
PrepareCommand(cmd, conn, null, cmdTye, cmdText, commandParameters);
SqlDataAdapter adapter = new SqlDataAdapter();
adapter.SelectCommand = cmd;
adapter.Fill(ds);
}
DataTableCollection table = ds.Tables; return table;
} ///
/// 执行一条返回结果集的SqlCommand,通过一个已经存在的数据库连接 /// 使用参数数组提供参数 ///
/// SqlCommand命令类型
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个表集合(DataTableCollection)表示查询得到的数据集
public static DataTableCollection GetTable(CommandType cmdTye, string cmdText, SqlParameter[] commandParameters)
{ return GetTable(cmdTye, cmdText, commandParameters);
} ///
/// 存储过程专用 ///
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个表集合(DataTableCollection)表示查询得到的数据集
public static DataTableCollection GetTableProducts(string cmdText, SqlParameter[] commandParameters)
{ return GetTable(CommandType.StoredProcedure, cmdText, commandParameters);
} ///
/// Sql语句专用 ///
/// T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个表集合(DataTableCollection)表示查询得到的数据集
public static DataTableCollection GetTableText(string cmdText, SqlParameter[] commandParameters)
{ return GetTable(CommandType.Text, cmdText, commandParameters);
} #endregion
///
/// 为执行命令准备参数 ///
/// SqlCommand 命令
/// 已经存在的数据库连接
/// 数据库事物处理
/// 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 (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);
}
} ///
/// Execute a SqlCommand that returns a resultset against the database specified in the connection string
/// using the provided parameters. ///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// A SqlDataReader containing the results
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;
}
} #region//ExecuteDataSet方法
///
/// return a dataset ///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// return a dataset
public static DataSet ExecuteDataSet(string connectionString, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(); try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = cmd;
da.Fill(ds); return ds;
} catch
{
conn.Close(); throw;
}
} ///
/// 返回一个DataSet ///
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// return a dataset
public static DataSet ExecuteDataSet(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{ return ExecuteDataSet(connectionString, cmdType, cmdText, commandParameters);
} ///
/// 返回一个DataSet ///
/// 存储过程的名字
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// return a dataset
public static DataSet ExecuteDataSetProducts(string cmdText, params SqlParameter[] commandParameters)
{ return ExecuteDataSet(connectionString, CommandType.StoredProcedure, cmdText, commandParameters);
} ///
/// 返回一个DataSet ///
/// T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// return a dataset
public static DataSet ExecuteDataSetText(string cmdText, params SqlParameter[] commandParameters)
{ return ExecuteDataSet(connectionString, CommandType.Text, cmdText, commandParameters);
} public static DataView ExecuteDataSet(string connectionString, string sortExpression, string direction, CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{
SqlConnection conn = new SqlConnection(connectionString);
SqlCommand cmd = new SqlCommand(); try
{
PrepareCommand(cmd, conn, null, cmdType, cmdText, commandParameters);
SqlDataAdapter da = new SqlDataAdapter();
DataSet ds = new DataSet();
da.SelectCommand = cmd;
da.Fill(ds);
DataView dv = ds.Tables[0].DefaultView;
dv.Sort = sortExpression + " " + direction; return dv;
} catch
{
conn.Close(); throw;
}
} #endregion
#region // ExecuteScalar方法
///
/// 返回第一行的第一列 ///
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个对象
public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] commandParameters)
{ return ExecuteScalar(SqlHelper.connectionString, cmdType, cmdText, commandParameters);
} ///
/// 返回第一行的第一列存储过程专用 ///
/// 存储过程的名字
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个对象
public static object ExecuteScalarProducts(string cmdText, params SqlParameter[] commandParameters)
{ return ExecuteScalar(SqlHelper.connectionString, CommandType.StoredProcedure, cmdText, commandParameters);
} ///
/// 返回第一行的第一列Sql语句专用 ///
/// 者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// 返回一个对象
public static object ExecuteScalarText(string cmdText, params SqlParameter[] commandParameters)
{ return ExecuteScalar(SqlHelper.connectionString, CommandType.Text, cmdText, commandParameters);
} ///
/// Execute a SqlCommand that returns the first column of the first record against the database specified in the connection string
/// using the provided parameters. ///
///
/// e.g.:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); ///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// An object that should be converted to the expected type using {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 = cmd.ExecuteScalar();
cmd.Parameters.Clear(); return val;
}
} ///
/// Execute a SqlCommand that returns the first column of the first record against an existing database connection
/// using the provided parameters. ///
///
/// e.g.:
/// Object obj = ExecuteScalar(connString, CommandType.StoredProcedure, "PublishOrders", new SqlParameter("@prodid", 24)); ///
/// 一个有效的数据库连接字符串
/// SqlCommand命令类型 (存储过程, T-SQL语句, 等等。)
/// 存储过程的名字或者 T-SQL 语句
/// 以数组形式提供SqlCommand命令中用到的参数列表
/// An object that should be converted to the expected type using {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 = cmd.ExecuteScalar();
cmd.Parameters.Clear(); return val;
} #endregion
///
/// 检查是否存在 ///
/// Sql语句
/// bool结果
public static bool Exists(string strSql)
{ int cmdresult = Int32(ExecuteScalar(connectionString, CommandType.Text, strSql, null)); if (cmdresult == 0)
{ return false;
} else
{ return true;
}
} ///
/// 检查是否存在 ///
/// Sql语句
/// 参数
/// bool结果
public static bool Exists(string strSql, params SqlParameter[] cmdParms)
{ int cmdresult = Int32(ExecuteScalar(connectionString, CommandType.Text, strSql, cmdParms)); if (cmdresult == 0)
{ return false;
} else
{ return true;
}
}
}