-------------------------------------------------2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!-----------------------------------------------------
1. 构造函数
四个重载:
1.无参
2.SqlDataAdapter(SqlCommand) →执行命令对象实例
3. SqlDataAdapter(String,SqlConnection) →①只能指定查询语句②连接对象实例
4.SqlDataAdapter(String, ConnectionString) →用 SelectCommand和一个连接字符串初始化 SqlDataAdapter类的一个新实例
Note:第四个重载就把连接对象和命令对象都包含进去了!
2. 填充数据(Fill)
最简单的填充数据
DataSet dataSet= new DataSet();
using (SqlConnection conn= new SqlConnection(""))
{
conn.Open();
SqlCommandcommand=conn.CreateCommand();
command.CommandText= "select name,age,addressfrom MyInformation";
SqlDataAdapterdataAdapter= newSqlDataAdapter(command);
dataAdapter.Fill(dataSet); //填充数据
}
3.使用“SqlCommandBuilder”对数据进行增删改查
①添加数据
using (SqlConnection conn =new SqlConnection(ConnectionString()))
{
conn.Open();
//构建查询语句,也可以指定SqlCommand,其中变换的方法有很多
SqlDataAdapter da =new SqlDataAdapter("select LastName,FirstName from dbo.Employees", conn);
DataSet ds =new DataSet();
da.Fill(ds);
//这句话很重要,它会把你在DataSet增加的数据转化为SQL语句用来更新数据库
SqlCommandBuilder cmdBuilder =new SqlCommandBuilder(da);
//添加行,实例化一个行对象,注意是用NewRow来创建行
DataRow row =ds.Tables[0].NewRow();
row[0] ="Yang";
row[1] ="鬼头";
ds.Tables[0].Rows.Add(row); //添加到表中
da.Update(ds); //把DataSet中表和数据库进行对比,更新
}
②修改数据
using (SqlConnectionconn =newSqlConnection(""))
{
SqlDataAdapter da =new SqlDataAdapter("SQL语句或你自己定义的命令对象", conn);
DataSet ds =new DataSet();
da.Fill(ds);
//很重要的一句话
SqlCommandBuilder cmdBuilder =newSqlCommandBuilder(da);
ds.Tables[0].Rows[12][1] =""; //修改数据
da.Update(ds);
//调用Update方法其中隐式的调用了AcceptChanges方法,更新数据集中的数据
//如果你继续使用这个数据集而没有调用这个方法,在后面的使用会出现异常
ds.AcceptChanges(); //这句话可以不写的
}
③删除数据
using (SqlConnection conn =new SqlConnection(""))
{
SqlDataAdapter da =new SqlDataAdapter("SQL语句或你自己定义的命令对象", conn);
DataSet ds =new DataSet();
da.Fill(ds);
SqlCommandBuilder cmdBuilder =new SqlCommandBuilder(da);
//删除数据
ds.Tables[0].Rows[12].Delete();
da.Update(ds); //这边会隐式调用DataTable的AcceptChanges方法
}
Note(很重要的注意点):值得注意的是Update方法已经隐式帮我调用了AcceptChanges,不比担心状态为改变删除数据会报错,微软已经帮我们都做好了,其实背后就是做的Table.AcceptChanges()这件事,如果在一般的DataTable中会怎么样,提交自上次调用AcceptChanges以来对该行进行的所有更改,在调用这个方法之后,表中所有更改将会提交,所有行状态(RowState)状态都将变为Unchanged,在DataSet中我将会说到这些内容!
4.关于“SqlDataAdapter”中Fill方法的一些讨论
简单的写一下,MSDN上都有的,查一下就知道了!
★指定填充数据的数量,如:
//从第五行到第十行数据填充DataSet
//上面的定义错了
//应该是从第六行开始,后面的十条记录
da.Fill(ds,5,10,”MyTable”)
--------------------------------------------------- 2345王牌技术员联盟、2345王牌技术员联盟、期待与您交流!---------------------------------------------------------