---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
关于ADO.NET的相关知识摸索了一段时间了,稍微有了那么一点头绪了,笨啊,在这里重新复习一下关于DataSet的更新问题。
string ConnStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString;
using (SqlConnection conn = new SqlConnection(ConnStr))
{
conn.Open();
using (SqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = "Select * from Person";
DataSet dataset = new DataSet(); //相当于一个容器
SqlDataAdapter adapter = new SqlDataAdapter(cmd); // 执行SQl语句的cmd语句(将查询的cmd作为参数传递给adapter(SqlDataAdapter是DataSet和数据库之间沟通的桥梁))
adapter.Fill(dataset); // 将执行的结果填充到DataSet
DataTable table = dataset.Tables[0];
DataRow row = table.Rows[2];
row["Name"] = "清风"; // 修改
//table.Rows.RemoveAt(1); // 删除一行
//DataRow dt = table.NewRow(); //新增一行
}
}
此运行成功, 但这一切都是修改的内存中的DataSet,没有修改数据库。
再次可调用SqlDataAdapter的Update方法将对DataSet的修改提交到数据库,Update方法有很多重载方法,可以提交整个DataSet、DataTable或者若干DataRow。但需要为SqlDataAdapter提供DeleteCommand、UpdateCommand、InsertCommand它才知道如何将对DataSet的修改提交到数据库。可以用SqlCommandBuilder自动生成这几个
Command,用法如下: SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
注意:SqlCommandBuilder要求表必须有主键。
01.string ConnStr = ConfigurationManager.ConnectionStrings["Connstr"].ConnectionString;
02.using (SqlConnection conn = new SqlConnection(ConnStr))
03.{
04. conn.Open();
05. using (SqlCommand cmd = conn.CreateCommand())
06. {
07. cmd.CommandText = "Select * from Person";
08. DataSet dataset = new DataSet(); //相当于一个容器
09. SqlDataAdapter adapter = new SqlDataAdapter(cmd); // 执行SQl语句的cmd语句(将查询的cmd作为参数传递给adapter(SqlDataAdapter是DataSet和数据库之间沟通的桥梁))
10. adapter.Fill(dataset); // 将执行的结果填充到DataSet
11. DataTable table = dataset.Tables[0];
12. DataRow row = table.Rows[2];
13. row["Name"] = "清风"; // 修改
14. table.Rows.RemoveAt(1); // 删除一行
15. DataRow dt = table.NewRow(); // 新增一行
16.
17.
18. SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
19. adapter.Update(dataset);
20. }
21.}
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ---------------------- 详细请查看:http://net.itheima.com/