using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlClient;
using System.Configuration;
namespace ado
{
class SQLHelper
{
//插入,更新,删除 params传递多个参数
public static int ExecuteNonQuery(string sql,params SqlParameter[] parameters)
{
string conStr = ConfigurationManager.ConnectionStrings["conStr"].ToString();
using(SqlConnection conn = new SqlConnection(conStr))
{
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)
{
string conStr = ConfigurationManager.ConnectionStrings["conStr"].ToString();
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd.ExecuteScalar();
}
}
}
//不能这样封装查询数据库,SqlDataReader是连接相关的, SqlDataReader中的查询结果并不是放到程序中的,而是放在数据库服务器中,SqlDataReader只是相当于放了一个指针(游标),只能读取当前游标指向的行,一旦连接断开就不能再读取。这样做的好处就是无论查询结果有多少条,对程序占用的内存都几乎没有影响。
/*public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters)
{
string conStr = ConfigurationManager.ConnectionStrings["conStr"].ToString();
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach (SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
return cmd.ExecuteReader();
}
}
}*/
//用强类型DataSet离线查询
//SqlDataReader对于小数据量的数据来说带来的只有麻烦,优点可以忽略不计。ADO.Net中提供了数据集的机制,将查询结果填充到本地内存中,这样连接断开、服务器
//断开都不影响数据的读取。
//DataSet dataset = new DataSet(); SqlDataAdapter adapter = new
//SqlDataAdapter(cmd); adapter.Fill(dataset);
//SqlDataAdapter是DataSet和数据库之间沟通的桥梁。数据集DataSet包含若干表DataTable,DataTable包含若干行DataRow。
//foreach (DataRow row in dataset.Tables[0].Rows) row["Name"]。
public static DataTable ExecuteDataTable(string sql, params SqlParameter[] parameters)
{
string conStr = ConfigurationManager.ConnectionStrings["conStr"].ToString();
using (SqlConnection conn = new SqlConnection(conStr))
{
conn.Open();
using(SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach(SqlParameter parameter in parameters)
{
cmd.Parameters.Add(parameter);
}
DataSet ds = new DataSet();
SqlDataAdapter dap = new SqlDataAdapter();
dap.Fill(ds);
return ds.Tables[0];
}
}
}
}
}