首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

请看以上,测试UPDATE方法

2012-09-25 
请看以下,测试UPDATE方法在《ADO.NET 2.0 技术内幕》中,讲到了用SqlDataAdapter的UPDATE方法向数据库提交更

请看以下,测试UPDATE方法
在《ADO.NET 2.0 技术内幕》中,讲到了用SqlDataAdapter的UPDATE方法向数据库提交更新时,需要获取数据源新的时间戳值,于是,在UPDATE语句中添加了SELECT语句来刷新改行,因此,我刚才就用另一个方法对UPDATE方法进行了测试,代码如下:
string strConn = "server = '(local)';database=Person;integrated security = true";
string strSQL = "SELECT * FROM 学生表 WHERE 学生学号 = '0122'";
SqlConnection conn = new SqlConnection(strConn);
SqlDataAdapter da = new SqlDataAdapter(strSQL, conn);
DataTable dt = new DataTable("学生表");
da.Fill(dt); //将数据填充到DataTable
dt.Rows[0]["年龄"] = 50; //修改DataTable中的数据
string strup = "SELECT * FROM 学生表 WHERE 学生学号 = '0415'";
da.UpdateCommand = new SqlCommand(strup, conn);
//提交更新
da.Update(dt);
foreach (DataRow row in dt.Rows)
 {
  Console.WriteLine("{0},{1},{2},{3}", row[0], row[1], row[2], row[3]);
  Console.WriteLine();
 }
Console.ReadKey();


上面代码中,我修改了DataTable中的数据,但是调用Update方法时,并不是执行的更新,而是使用SELECT语句选择数据源的另外一行,在最后的输出结果中,DataTable中却只有新选择的这一行了,先前那一行没有了。

1:请问,这是什么原因?
2:如果是这样的话,按照《ADO.NET 2.0 技术内幕》中讲的,如果DataTable中多行更新,岂不是不能刷新该行,而是把其它行都整没了吗?

[解决办法]
你的 strup 就是select啊
[解决办法]
UpdateCommand 应该是要执行的修改语句 update

new SqlCommand("Update CustTest set CustName = @pCustName where CustId = @pCustId")
[解决办法]
2楼正解
[解决办法]
你是不是传参没有对
[解决办法]
2楼正解!

热点排行