System.Data.SqlClient.SqlDataAdapter sda=new System.Data.SqlClient.SqlDataAdapter("select * from test where id=2","server=localhost; uid=sa; pwd=lcz; database=test");
SqlCommandBuilder custCB = new SqlCommandBuilder(sda);
System.Data.DataSet ds=new System.Data.DataSet();
sda.Fill(ds,"test");
DataTable str = new DataTable();
str=ds.Tables["test"];
str.Rows[0].ItemArray[1]="editname";
sda.AcceptChanges()
sda.Update(ds,"test");
//str.AcceptChanges();
SqlCommandBuilder custCB = new SqlCommandBuilder(sda);
System.Data.DataSet ds=new System.Data.DataSet();
sda.Fill(ds,"test");
DataTable str = new DataTable();
str=ds.Tables["test"];
str.Rows[0].ItemArray[1]="editname";
sda.AcceptChanges()
sda.Update(ds,"test");
//str.AcceptChanges();
不要用Table[0],指定表名test
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: 在位置 1 处没有任何行。源错误:
行 38:
行 39: //SqlCommandBuilder sb=new SqlCommandBuilder(sda);
行 40: str.Rows[1].ItemArray[1]="editname";
行 41: sda.Update(ds,"test");
行 42: //str.AcceptChanges();
又出错了,挺有意思,呵呵
你修改了str中的值并不等于你修改了DataSet中的test表的值啊????
你可以;
sda.Table["test"].Rows[0].ItemArray[1]="editname";
然后再AcceptChanges()、Update(ds,"test")
ok....!!!
{
System.Data.SqlClient.SqlDataAdapter sda=new System.Data.SqlClient.SqlDataAdapter("select * from test where id=2","server=localhost; uid=sa; pwd=; database=test");
SqlCommandBuilder custCB = new SqlCommandBuilder(sda);
System.Data.DataSet ds=new System.Data.DataSet();
sda.Fill(ds,"test");
DataTable str = new DataTable();
str=ds.Tables["test"];
//SqlCommandBuilder sb=new SqlCommandBuilder(sda);
str.Rows[0].ItemArray[1]="editname";
sda.Update(ds,"test");
//str.AcceptChanges();
}
然后再AcceptChanges()、Update(ds,"test")
ok....!!!
不好意思是Tables
然后再AcceptChanges()、Update(ds,"test")
ok....!!!???