封装一个SQLHelper类方便使用,提供
ExecuteDataTable(string sql,params SqlParameter[] parameters)、
ExecuteNonQuery(string sql,params SqlParameter[] parameters)、
ExecuteScalar(string sql,params SqlParameter[] parameters)等方法。 网上有微软提供的最全的SQLHelper类,是Enterprise Library中的一部分
ExecuteReader(返回DataReader,因为需要连接,并不是很好的封装,所以建议使用ExecuteDataTable)
注意事项:通过执行ExecuteReader()方法获取输出参数的时候需要将reader.Close()以后才能获取
操作模型: App.config + SQLHelper + 带参数的SQL语句
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace _10封装加多条件查询
{
public class SqlHelper
{
private static readonly string str = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;
//ExecuteScalar ExecuteNonQuery ExecuteReader Execute
/// <summary>
/// 用于增删改,返回受影响的行数
/// </summary>
/// <param name="sql"></param>
/// <param name="ps"></param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql,params SqlParameter[] ps)
{
using (SqlConnection con=new SqlConnection(str))
{
using (SqlCommand cmd=new SqlCommand(sql,con))
{
con.Open();
cmd.Parameters.AddRange(ps);
return cmd.ExecuteNonQuery();
}
}
}
/// <summary>
/// 返回首行首列
/// </summary>
/// <param name="sql"></param>
/// <param name="ps"></param>
/// <returns></returns>
public static object ExecuteScalar(string sql,params SqlParameter[] ps)
{
using (SqlConnection con=new SqlConnection(str))
{
using (SqlCommand cmd=new SqlCommand(sql,con))
{
con.Open();
cmd.Parameters.AddRange(ps);
return cmd.ExecuteScalar();
}
}
}
/// <summary>
/// 返回读取数据库的对象
/// </summary>
/// <param name="sql"></param>
/// <param name="ps"></param>
/// <returns></returns>
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] ps)
{
SqlConnection con=new SqlConnection(str);
using (SqlCommand cmd=new SqlCommand(sql,con))
{
try
{
con.Open();
cmd.Parameters.AddRange(ps);
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception e)
{
con.Close();
con.Dispose();
throw e;
}
}
}
/// <summary>
/// 把数据读到一个表里并返回
/// </summary>
/// <param name="sql"></param>
/// <param name="ps"></param>
/// <returns></returns>
public static DataTable ExecuteTable(string sql,params SqlParameter[] ps)
{
DataTable dt=new DataTable();
using (SqlDataAdapter sda=new SqlDataAdapter(sql,str))
{
sda.SelectCommand.Parameters.AddRange(ps);
sda.Fill(dt);
}
return dt;
}
}
}