注:连接字符串以写入配置文件中,详情此处不再展开。参加之前博客。
using System.Configuration;
using System.Data.SqlClient;
using System.Data;
namespace Course_Selecting.C_SCommon
{
class SqlHelper
{
#region 获取连接字符串
//从配置文件中读取连接字符串
public static string GetConnevtionString()
{
return ConfigurationManager.ConnectionStrings["Sql"].ConnectionString;
}
#endregion
#region 执行SQL返回受影响的行数
//执行命令的方法:insert,update,delete 返回受影响的行数
//params:可变参数,省略手动构造数组的过程,直接指定对象,编译器自动构造数组,并加入对象数组传递传递过来
public static int ExecuteNonQuery(string sqlText, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(GetConnevtionString()))
{
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = sqlText;
//添加参数到命令中
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
}
#endregion
#region 执行SQL返回第一行第一列的值
//执行SQL返回 返回查询结果中的 第一行第一列的值
public static object ExcuteScalar(string sqlText, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(GetConnevtionString()))
{
using (SqlCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = sqlText;
cmd.Parameters.AddRange(parameters);
object result = cmd.ExecuteScalar();
cmd.Parameters.Clear();
return result;
}
}
}
#endregion
#region 执行一个SQL 返回DataTabella
//执行一个SQL 返回DataTabella
public static DataTable ExcuteDataTbale(string sqlText, params SqlParameter[] parameters)
{
using (SqlDataAdapter adapter = new SqlDataAdapter(sqlText, GetConnevtionString()))
{
DataTable dt = new DataTable();
adapter.SelectCommand.Parameters.AddRange(parameters);//参数添加到查询条件中
adapter.Fill(dt);
return dt;
}
}
#endregion
#region 执行一个SQL 返回SqlDataReader
public static SqlDataReader ExcuteReader(string sqlText, params SqlParameter[] parameters)
{
//SqlDataReader要求读取数据是独占SqlConnection对象,且SqlConnection一直处于打开状态
SqlConnection conn = new SqlConnection(GetConnevtionString());
SqlCommand cmd = new SqlCommand(sqlText, conn);
conn.Open();
cmd.Parameters.AddRange(parameters);
//CommandBehavior.CloseConnection表示当SqlDataReader释放时,同时释放SqlConnection对象
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
#endregion
//**********SqlDataReader和SQLDataAdapter区别:*****************
//SqlDataReader建立连接后,一直保持连接状态,数据仍然存在数据库中
//SQLDataAdapter建立连接后,一次性把所有数据加载到内存中,然后关闭连接,不适合大量数据
}
}