public static String connStr = ConfigurationManager.ConnectionStrings["connStr"].ConnectionString;
public static int ExecuteNoQuery(string sql,params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd.ExecuteNonQuery();
}
}
}
public static object ExecuteScalar(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd.ExecuteScalar();
}
}
}
//以下EexcuteReader不能用。
//SqlDataReader是和链接相关的,SqlDataReader中的查询结果并不是放在内存中的,而是放在数据库服务器中,我们用的SqlDataReader只是相当于一个指针(游标),
//只能读取当前游标指向的行,一旦链接断开就不能再读取。
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd.ExecuteReader();
}
}
}
//"数据集",把查询的结果放到本地内存中。这样与数据库的链接断开,也不会影响我们读查询结果的数据。
//DataSet dataset=new DataSet();1 在本地机中开辟数据集---dataset
//2 把查询结果放到中介adapter中。
//SqlDataAdapter adapter=new SqlDataAdapter(cmd);
//把adapter中的查询结果放到数据集dataset中
//adapter.Fill(dataset)
//一个DataSet中包含若干个DataTable,每个datatable中又包含多个DataRow["FuserName"]
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
using(SqlConnection conn=new SqlConnection(connStr))
{
conn.Open();
using(SqlCommand cmd=conn.CreateCommand())
{
cmd.CommandText = sql;
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataset);
return dataset.Tables[0];
}
}
}