日期:2014-05-20 浏览次数:21404 次
public class SQLServerHelper
{
//连接字符串
private static readonly string connectionString = ConfigurationManager.ConnectionStrings["SPEEDLINK"].ToString();
private static SqlConnection conn = new SqlConnection(connectionString);
/// <summary>
/// 封装对数据库的增、删、改方法
/// </summary>
/// <param name="cmdText">SQL语句字符串</param>
/// <param name="cmdType">命令类型:存储过程或SQL语句</param>
/// <param name="cmdParams">传入的参数,这里是一个动态数组</param>
/// <returns>返回数据影响的行数</returns>
public static int ExecuteNonQuery(string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
{
SqlCommand comm = new SqlCommand();
//详细情况参见下面的方法存根
PrepareCommand(comm, conn, cmdText, cmdType, cmdParams);
try
{
return comm.ExecuteNonQuery();
}
catch (Exception ex)
{
throw ex;
}
finally
{
//comm.Parameters.Clear();
conn.Close();
}
}
/// <summary>
/// 封装Command对象的ExecuteReader方法,用于数据查询
/// </summary>
/// <param name="cmdText">SQL语句字符串</param>
/// <param name="cmdType">命令类型:存储过程或SQL语句</param>
/// <param name="cmdParams">传入的参数,这里是一个动态数组</param>
/// <returns>返回SqlDataReader对象</returns>
public static SqlDataReader ExecuteReader(string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
{
SqlCommand comm = new SqlCommand();
PrepareCommand(comm, conn, cmdText, cmdType, cmdParams);
try
{
return comm.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
throw ex;
}
}
/// <summary>
/// 用于封装Command对象的ExecuteScalar方法,返回首行首列数据
/// </summary>
/// <param name="cmdText">SQL语句字符串</param>
/// <param name="cmdType">命令类型:存储过程或SQL语句</param>
/// <param name="cmdParams">传入的参数,这里是一个动态数组</param>
/// <returns>返回object对象</returns>
public static object ExecuteScalar(string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
{
SqlCommand comm = new SqlCommand();
PrepareCommand(comm, conn, cmdText, cmdType, cmdParams);
try
{
return comm.ExecuteScalar();
}
catch(Exception ex)
{
throw ex;
}
}
/// <summary>
/// 主要用于返回DataTable的查询数据
/// </summary>
/// <param name="cmdText">SQL语句字符串</param>
/// <param name="cmdType">命令类型:存储过程或SQL语句</param>
/// <param name="cmdParams">传入的参数,这里是一个动态数组</param>
/// <returns>返回DataTable对象</returns>
public static DataTable GetDataTable(string cmdText, CommandType cmdType, params SqlParameter[] cmdParams)
{
SqlCommand comm = new SqlCommand();
PrepareCommand(comm, conn, cmdText, cmdType, cmdParams);
SqlDataAdapter sda = new SqlDataAdapter();
sda.SelectCommand = comm;
DataSet ds = new DataSet();
try
{
sda.Fill(ds);
return ds.Tables[0];
}
catch (Exception ex)
{
throw ex;
}
finally
{
conn.Close();
}
}
/// <summary>
/// 用于对Command对象做初始化赋值工作
/// </summary>
/// <param name="comm">Command命令</param>
/// <param name="conn">数据库连接</param>
/// <param name="cmdText">指令语句</param>
/// <param name="cmdType">指令类型</param>
/// <param name="cmdParams">指令参数</param>
private static void PrepareCommand(SqlCommand comm, SqlConnection conn, string cmdText, CommandType cmdType, SqlParameter[] cmdParams)
{
try
{
//检测数据库连接状态,如果关闭则开启数据库连接
if (conn.State == ConnectionState.Closed)
{
conn.Open();
//comm.Parameters.Clear();
}
comm.Connection = conn;
comm.CommandText = cmdText;
comm.CommandType = cmdType;
//如果命令参数不为空,则将参数全部引用
if (cmdParams != null)
{
for (int i = 0; i < cmdParams.Length; i++)
{
comm.Parameters.Add(cmdParams[i]);
}
}
}
catch (Exception ex)
{
throw ex;
}
}
}