以下程序是按书上的例题写的。做的是把数据库中northwind的Customers表更新其中一个列。
但我把Customers的内容复制到另一个表AMyCustomers,操作时总提示错误说“对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。 ”SqlDataAdapter thisAdapter = new SqlDataAdapter("select CustomerID,CompanyName from AMyCustomers", thisConnection);但我在这一句里把表名改回 Customers就可以执行,请问为什么呢?//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 change in table
thisAdapter.Update(thisDataSet, "Customers");
Console.WriteLine("name after change:{0}", thisDataSet.Tables["Customers"].Rows[9]["CompanyName"]); thisConnection.Close();
但我把Customers的内容复制到另一个表AMyCustomers,操作时总提示错误说“对于不返回任何键列信息的 SelectCommand,不支持 UpdateCommand 的动态 SQL 生成。 ”SqlDataAdapter thisAdapter = new SqlDataAdapter("select CustomerID,CompanyName from AMyCustomers", thisConnection);但我在这一句里把表名改回 Customers就可以执行,请问为什么呢?//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 change in table
thisAdapter.Update(thisDataSet, "Customers");
Console.WriteLine("name after change:{0}", thisDataSet.Tables["Customers"].Rows[9]["CompanyName"]); thisConnection.Close();
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货