1、SqlDataAdapter是数据适配器,就是一个连接数据库和数据集(DataSet)的桥梁作用,把对数据库操作的SQL语句得到的结果传到SqlDataAdapter对象中,在通过SqlDataAdapter.Fill
(DataSet)方法,将结果填充到DataSet中。
2、DataSet对象可以调用Tables属性对填充的结果进行访问。
3、在对返回的table表中的数据进行访问的时候是按照行进行访问的,获取行序列号之后再根据属性值进行访问相应的数据。
参考实例,具体使用参考SQLHelper
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = "server=.;database=T_Test;Trusted_Connection=SSPI";
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
foreach (SqlParameter parameter in paramaters)
{
cmd.Parameters.Add(parameter);
}
//新建一个DataSet类对象
DataSet dataset = new DataSet();
//新建一个SqlDataAdapter类对象,创建数据适配器对象
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
//将得到的结果填充到dataset中。具体是如何操作的由SqlDataAdapter类完成,无需多关心.
adapter.Fill(dataset);
//dataset可以有多个表,这里我们只用到了一个表,所以返回一个表。
DataTable table=dataset.Tables[0];
for (int i = 0; i < table.Rows.Count; i++)
{
DataRow row=table.Rows[i];
Console.WriteLine(row["Name"]);
}
// return dataset.Tables[0];
}
简单使用:
using (SqlConnection conn=new SqlConnection())
{
conn.ConnectionString = conStr;
conn.Open();
using (SqlCommand cmd=conn.CreateCommand())
{
cmd.CommandText = "select * from T_Tel";
//创建一个DataSet类对象,dataset
DataSet dataset = new DataSet();
//创建一个SqlDataAdapter实例,
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
//将执行的结果填充到dataset
adapter.Fill(dataset);
//dataset相当于一个执行结果的集合,有个属性Tables,将执行的结果存入到表中
//dataset含有若干个DataTable
DataTable table = dataset.Tables[0];
//遍历DataTable的每一行,
for (int i = 0; i < table.Rows.Count; i++)
{//取得每一行的结果。
DataRow row=table.Rows[i];
//将每一行的每一列的结果取出
string name = Convert.ToString(row["Starttel"]);
MessageBox.Show(name);
}
}
}
更新dataset:
//SqlCommandBuilder自动生成SQL语句
using (SqlConnection conn = new SqlConnection())
{
conn.ConnectionString = "server=.;database=T_Test;Trusted_Connection=SSPI";
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "select * from T_Customer";
DataSet dataset = new DataSet();
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
adapter.Fill(dataset);
DataTable table = dataset.Tables[0];
DataRow row=table.Rows[0];
//此时所改的只是内存中dataset中的内容,数据库中不受影响,除非提交到数据库
//可以使用update进行数据的更新提交
row["Name"] = "SIDIFEN";
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
adapter.Update(dataset);
}
}