using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
namespace DAL
{
public class SqlHelper
{ //定义连接字符串
public static readonly string connSr = ConfigurationManager.ConnectionStrings ["ConnStr"].ConnectionString;
#region ExcuteNonQuery 用于执行增,删,改
public static int ExecuteNonQuery(string sql, CommandType commandType, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connSr))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql,conn))
{
cmd.CommandType = commandType;
if (parameters!=null)
{
cmd.Parameters.AddRange(parameters);
}
return cmd.ExecuteNonQuery();
}
}
}
#endregion
#region ExecuteScalar 返回一个单行单列的数据
public static object ExcuteScalar(string sql, CommandType commandType, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connSr))
{
conn.Open();
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.CommandType = commandType;
if (parameters!=null)
{
cmd.Parameters.AddRange(parameters);
}
return cmd.ExecuteScalar();
}
}
}
#endregion
#region 返回一个DataTable类型
public static DataTable ExecuteDataTabe(string sql, CommandType commandType, params SqlParameter[] parameters)
{
DataTable dataTable = new DataTable();
//这里直接使用Adapter的方式将connection和command进行一个封装,没有了sqlconnection参数就是SQL和连接字符串
using (SqlDataAdapter sqlDataAdapter=new SqlDataAdapter(sql,connSr))
{
//适配中封装了connection和command,这里要选择参数是一个SQL语句还是一个存储过程
sqlDataAdapter.SelectCommand.CommandType = commandType;
if (parameters!=null)
{ //将参数加到参数列表中
sqlDataAdapter.SelectCommand.Parameters.AddRange(parameters);
}
//要将这些数据填充到表格当中,首先要创建一个DataTable对象
sqlDataAdapter.Fill(dataTable);
return dataTable;
}
}
#endregion
#region 返回一个SqlDataReader类型
public static SqlDataReader SqlDataReader(string sql, CommandType commandType, params SqlParameter[] parameters)
{
//这里的SqlDataReader在访问数据库的时候要一直保持着连接,所以这里的连接要手动的Dispose();
SqlConnection conn = new SqlConnection(connSr);
using (SqlCommand cmd=new SqlCommand( sql,conn))
{ //先将一切的准备的工作做好,然后在打开连接。
cmd.CommandType = commandType;
if (parameters!=null)
{
cmd.Parameters.AddRange(parameters);
}
//开始连接
try
{
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception)
{
conn.Close();
conn.Dispose();
throw;
}
}
}
#endregion
}
}
原文:http://www.cnblogs.com/luotongchao/p/4440287.html