下面是我总结出来的一个数据库访问公共类,基于ADO.NET,C#的,其中,以重载的方式实现使用存属过程的接口和不用存储过程的接口,如有不妥请大家指正,谢谢~
作者:shinehoo
/// <summary>
/// 创建一个SqlDataReader对象
/// </summary>
/// <param name="strSqlCommand">SQL语句</param>
/// <returns>返回SqlDataReader对象</returns>
public static SqlDataReader getRead(string strSqlCommand)
{
SqlConnection sqlcon = getConnection();
SqlDataReader sqlread;
try
{
sqlcon.Open();
//实例化一个SqlCommand对象
SqlCommand sqlcom = new SqlCommand(strSqlCommand, sqlcon);
//ExecuteReader创建SqlDataReader类对象,CommandBehavior .
//CloseConnection说明在关闭SqlDataReader对象的时候,关闭其关联的SqlConnection对象
sqlread = sqlcom.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception e)
{
throw e;
}
return sqlread;
}
//**************************************以下是调用存储过程的方法************************************
/// <summary>
/// 执行存储过程,返回SqlDataReader对象
/// 在SqlDataReader对象关闭的同时,数据库连接自动关闭
/// </summary>
/// <param name="proName">存储过程名</param>
/// <param name="paraValues">要传递给给存储过程的参数值类表</param>
/// <returns>SqlDataReader对象</returns>
public static SqlDataReader getRead(string proName, SqlParameter[] paraValues)
{
SqlConnection sqlcon = getConnection();
SqlDataReader dr;
SqlCommand comm = new SqlCommand(proName, sqlcon);
comm.CommandType = CommandType.StoredProcedure;
// 添加所有参数
if (paraValues != null)
{
foreach (SqlParameter para in paraValues)
{
comm.Parameters.Add(para);
}
}
try
{
sqlcon.Open();
dr = comm.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception e)
{
throw e;
}
finally
{
comm.Parameters.Clear();
}
return dr;
}
/// <summary>
/// 执行存储过程,不返回值。
/// </summary>
/// <param name="proName">存储过程名</param>
/// <param name="paraValues">参数值列表。</param>
public static void getCommand(string proName, SqlParameter[] paraValues)
{
SqlConnection sqlcon = getConnection();
SqlCommand comm = new SqlCommand(proName, sqlcon);
comm.CommandType = CommandType.StoredProcedure;
// 添加所有参数
if (paraValues != null)
{
foreach (SqlParameter para in paraValues)
{
comm.Parameters.Add(para);
}
}
try
{
sqlcon.Open();
comm.ExecuteNonQuery();
}
catch (Exception e)
{
throw e;
}
finally
{
comm.Parameters.Clear();
sqlcon.Close();
//sqlcon.Dispose();
}
}
/// <summary>
/// 执行存储过程返回一个表。
/// </summary>
/// <param name="proName">存储过程名</param>
/// <param name="paraValues">参数值列表</param>
/// <returns>DataTable对象</returns>
public static DataTable getDataTable(string proName, SqlParameter[] paraValues)
{
SqlConnection sqlcon = getConnection();
DataTable dt;
SqlCommand comm = new SqlCommand(proName, sqlcon);
comm.CommandType = CommandType.StoredProcedure;
// 添加所有参数
if(paraValues != null)
{
foreach (SqlParameter para in paraValues)
{
comm.Parameters.Add(para);
}
}
try
{
sqlcon.Open();
SqlDataAdapter sqlda = new SqlDataAdapter(comm);
dt = new DataTable();
sqlda.Fill(dt);
}
catch (Exception e)
{
throw e;
}
finally
{
comm.Parameters.Clear();
sqlcon.Close();
//sqlcon.Dispose();
}
return dt;
}
/// <summary>
/// 返回查询结果的第一行第一列对象
/// </summary>
/// <param name="strSqlCommand"></param>
/// <returns></returns>
public static object getExecuteScale(string proName, SqlParameter[] paraValues)
{
object result;
SqlConnection sqlcon = getConnection();
//实例化一个SqlCommand对象
SqlCommand comm = new SqlCommand(proName, sqlcon);
comm.CommandType = CommandType.StoredProcedure;
// 添加所有参数
if (paraValues != null)
{
foreach (SqlParameter para in paraValues)
{
comm.Parameters.Add(para);
}
}
try
{
sqlcon.Open();
result = comm.ExecuteScalar();
}
catch (Exception e)
{
throw e;
}
finally
{
comm.Parameters.Clear();
sqlcon.Close();
//sqlcon.Dispose();
}
return result;
}
}
}