[size=small]
#region 打开数据库连接
private static SqlConnection sqlConString;
private static SqlConnection SqlConString
{
get
{
string connString = ConfigurationManager.ConnectionStrings["SqlConString"].ConnectionString;
if (sqlConString == null)
{
sqlConString = new SqlConnection(connString);
sqlConString.Open();
}
else if (sqlConString.State == ConnectionState.Closed)
{
sqlConString.Open();
}
else if (sqlConString.State == ConnectionState.Broken)
{
sqlConString.Close();
sqlConString.Open();
}
return sqlConString;
}
}
#endregion
#region ExecuteScalar
/// <summary>
/// 以不带参数形式执行SQL语句
/// </summary>
/// <param name="strSql">SQL语句或存储过程名称</param>
/// <returns>返回首行首列单元格的值</returns>
public static int ExecuteScalar(string strSql)
{
int result;
using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
{
result = Convert.ToInt32(sqlCmd.ExecuteScalar());
}
return result;
}
public static object GetExecuteObject(string strSql)
{
object result;
using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
{
result = sqlCmd.ExecuteScalar();
}
return result;
}
/// <summary>
/// 以不带参数形式执行SQL语句或存储过程
/// </summary>
/// <param name="strSql">SQL语句或存储过程名称</param>
/// <param name="cmdType">命令类型</param>
/// <returns>返回首行首列单元格的值</returns>
public static int ExecuteScalar(string strSql, CommandType cmdType)
{
int result;
using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
{
sqlCmd.CommandType = cmdType;
result = Convert.ToInt32(sqlCmd.ExecuteScalar());
}
return result;
}
public static object GetExecuteObject(string strSql, CommandType cmdType)
{
object result;
using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
{
sqlCmd.CommandType = cmdType;
result = sqlCmd.ExecuteScalar();
}
return result;
}
/// <summary>
/// 以带参数的形式执行SQL语句或存储过程
/// </summary>
/// <param name="strSql">SQL语句或存储过程名称</param>
/// <param name="cmdType">命令类型</param>
/// <param name="para"></param>
/// <returns>返回首行首列单元格的值</returns>
public static int ExecuteScalar(string strSql, CommandType cmdType, params SqlParameter[] para)
{
int result;
using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
{
sqlCmd.CommandType = cmdType;
sqlCmd.Parameters.AddRange(para);
result = Convert.ToInt32(sqlCmd.ExecuteScalar());
sqlCmd.Parameters.Clear();
}
return result;
}
public static object GetExecuteObject(string strSql, CommandType cmdType, params SqlParameter[] para)
{
object result;
using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
{
sqlCmd.CommandType = cmdType;
result = sqlCmd.ExecuteScalar();
sqlCmd.Parameters.Clear();
}
return result;
}
#endregion
#region ExecuteNonQuery
/// <summary>
/// 以不带参数的形式执行Sql语句,返回受影响行数
/// </summary>
/// <param name="strSql">SQL语句</param>
/// <returns></returns>
public static int ExecuteNonQuery(string strSql)
{
int result;
using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
{
result = sqlCmd.ExecuteNonQuery();
}
return result;
}
/// <summary>
/// 以带参数的形式执行Sql语句或存储过程,返回受影响行数
/// </summary>
/// <param name="strSql">SQL语句或存储过程名称</param>
/// <param name="para">参数集合</param>
/// <returns></returns>
public static int ExecuteNonQuery(string strSql, CommandType cmdType, params SqlParameter[] para)
{
int result;
using (SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString))
{
sqlCmd.CommandType = cmdType;
sqlCmd.Parameters.AddRange(para);
result = sqlCmd.ExecuteNonQuery();
sqlCmd.Parameters.Clear();
}
return result;
}
#endregion
#region ExecuteReader
/// <summary>
/// 返回SqlDataReader对象
/// </summary>
/// <param name="strSql"></param>
/// <returns></returns>
public static SqlDataReader GetDataReader(string strSql)
{
SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString);
SqlDataReader reader = sqlCmd.ExecuteReader();
return reader;
}
/// <summary>
/// 以带参数的形式返回SqlDataReader对象
/// </summary>
/// <param name="strSql"></param>
/// <param name="para"></param>
/// <returns></returns>
public static SqlDataReader GetDataReader(string strSql, params SqlParameter[] para)
{
SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString);
sqlCmd.Parameters.AddRange(para);
SqlDataReader reader = sqlCmd.ExecuteReader();
sqlCmd.Parameters.Clear();
return reader;
}
#endregion
#region GetDataTable
/// <summary>
/// 以不带参数的形式执行SQL语句或存储过程,返回DataTable数据集
/// </summary>
/// <param name="strSql">SQL语句或存储过程名称</param>
/// <param name="cmdType">命令类型</param>
/// <returns></returns>
public static DataTable GetDataTable(string strSql, CommandType cmdType)
{
DataTable dt = new DataTable();
SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString);
sqlCmd.CommandType = cmdType;
using (SqlDataReader sqlDR = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sqlDR);
sqlDR.Close();
}
return dt;
}
/// <summary>
/// 以带参数的形式执行SQL语句或存储过程,返回DataTable数据集
/// </summary>
/// <param name="strSql">SQL语句或存储过程名称</param>
/// <param name="cmdType">命令类型</param>
/// <param name="para">参数集合</param>
/// <returns></returns>
public static DataTable GetDataTable(string strSql, CommandType cmdType, params SqlParameter[] para)
{
DataTable dt = new DataTable();
SqlCommand sqlCmd = new SqlCommand(strSql, SqlConString);
sqlCmd.CommandType = cmdType;
sqlCmd.Parameters.AddRange(para);
using (SqlDataReader sqlDR = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection))
{
dt.Load(sqlDR);
sqlDR.Close();
}
sqlCmd.Parameters.Clear();
return dt;
}
#endregion
#region 类型转换
/// <summary>
/// 将空("")或null值的字符串转换为空字段
/// </summary>
/// <param name="obj">传入的参数</param>
public static object GetValueWhetherNull(object obj)
{
if (string.IsNullOrEmpty(obj.ToString()))
{
return DBNull.Value;
}
else
{
return obj;
}
}
/// <summary>
/// 将值类型(整型、浮点型、Decimal型、boo型、可空类型(Nullable<T>泛型结构体))转换为空字段
/// </summary>
/// <param name="obj">传入的参数</param>
/// <returns></returns>
public static object GetSqlNull(object obj)
{
return obj == null ? (object)DBNull.Value : obj;
}
#endregion
解释一下cmd.Parameters.Clear();的作用
1、清除以前的参数设置,防止重复添加
2、在大多数时候如果不清楚就会在造成参数冗余,添加的时候调用了cmd在修改之前没有清除,就可能报参数错误
[/size]