using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Text;
namespace 自己封装的SqlHelper
{
public static class SqlHelper
{
//App.config 配置文件的内容
//<?xml version="1.0" encoding="utf-8" ?>
//<configuration>
// <connectionStrings>
// <add name="sqlConnStr" connectionString="Data Source=.;initial Catalog=;integrated security =true;"/>
// </connectionStrings>
//</configuration>
/// 通过配置文件来获取数据库链接字符串
private static readonly string conStr = ConfigurationManager.ConnectionStrings["sqlConnStr"].ConnectionString;
//private static readonly string constr = "Data Source=.;initial Catalog=;integrated security =true;";
/// <summary>
/// insert(插入)、delete(删除)、update(更新)
/// </summary>
/// <param name="sql">Sql命令语句</param>
/// <param name="pms">执行命令所用参数的集合</param>
/// <returns></returns>
public static int ExecuteNonQuery(string sql, params SqlParameter[] pms)
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
//可变参数pms如果用户不传递的时候,是一个长度为0的数组。不是null。
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
con.Open();
return cmd.ExecuteNonQuery();
}
}
}
/// <summary>
/// 返回单个值,第一行第一列,返回单个值的
/// </summary>
/// <param name="sql">Sql命令语句</param>
/// <param name="pms">执行命令所用参数的集合</param>
/// <returns></returns>
public static object ExecuteScalar(string sql, params SqlParameter[] pms)
{
using (SqlConnection con = new SqlConnection(conStr))
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
//可变参数pms如果用户不传递的时候,是一个长度为0的数组。不是null。
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
con.Open();
return cmd.ExecuteScalar();
}
}
}
/// <summary>
/// select 查询多行多列,调用ExecuteReader()来实现。注意:在返回的时候,reader要调用Close()来关闭对象。
/// </summary>
/// <param name="sql">Sql命令语句</param>
/// <param name="pms">执行命令所用参数的集合</param>
/// <returns></returns>
public static SqlDataReader ExecuteReader(string sql, params SqlDataReader[] pms)
{
SqlConnection con = new SqlConnection(conStr);
{
using (SqlCommand cmd = new SqlCommand(sql, con))
{
if (pms != null)
{
cmd.Parameters.AddRange(pms);
}
try
{
con.Open();
//参数System.Data.CommandBehavior.CloseConnection表示当外部调用该DataReader对象的Close()方法时,在该Close()方法内部,会自动调用与该DataReader相关联的Connection的Close()方法
return cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
}
catch
{
////这里的关闭不要写在finally中,因为需要return 一个SqlDataReader
con.Close();////出错误时,将数据库链接及时关闭,放入“池”中
con.Dispose();
throw;////继续往上面抛出错误信息
}
}
}
}
/// <summary>
/// 返回结果集DataTable
/// </summary>
/// <param name="sql">Sql命令语句</param>
/// <param name="pms">执行命令所用参数的集合</param>
/// <returns></returns>
public static DataTable ExecuteTable(string sql, params SqlParameter[] pms)
{
DataTable dt = new DataTable();
using (SqlDataAdapter adapter = new SqlDataAdapter(sql, conStr))
{
adapter.Fill(dt);
}
return dt;
}
}
}