DataSet和DataAdapter的疑问
以下程序是按书上的例题写的。做的是把数据库中northwind的Customers表更新其中一个列。
但我把Customers的内容复制到另一个表AMyCustomers,操作时总提示错误说“对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。 ”
SqlDataAdapter thisAdapter = new SqlDataAdapter("select CustomerID,CompanyName from AMyCustomers", thisConnection);但我在这一句里把表名改回 Customers就可以执行,请问为什么呢?
- C# code
//Specify SQL Server-specific connection string SqlConnection thisConnection = new SqlConnection(@"server=.;Integrated Security=True;database=northwind"); //Create DataAdapter object for update and other operations SqlDataAdapter thisAdapter = new SqlDataAdapter("select CustomerID,CompanyName from AMyCustomers", thisConnection); //Create CommandBuilder object to build SQL commands SqlCommandBuilder thisBuilder = new SqlCommandBuilder(thisAdapter); //Create DataSet to contain related data tables,rows,and columns DataSet thisDataSet = new DataSet(); //Fill DataSet using query defined previously for DataAdapter thisAdapter.Fill(thisDataSet, "Customers"); //Show data before change Console.WriteLine("name before change:{0}", thisDataSet.Tables["Customers"].Rows[9]["CompanyName"]); //Change data in Customers table,row 9,CompanyName column thisDataSet.Tables["Customers"].Rows[9]["CompanyName"] = "Acme,Inc."; //Call update command to mark change in table thisAdapter.Update(thisDataSet, "Customers"); Console.WriteLine("name after change:{0}", thisDataSet.Tables["Customers"].Rows[9]["CompanyName"]); thisConnection.Close();
[解决办法]