2012-02-02 116 views
0

我正在尝试更新下面给出的修改后的数据集。我收到错误。我该如何纠正这个问题?DataSet更新失败

在System.Data.dll中发生未处理的System.InvalidOperationException类型异常 附加信息:更新无法找到TableMapping ['Table']或DataTable'Table'。

string strAccessConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\\Program Files\\ASWorx Products\\ASWorx200\\Database\\GemDatabase.mdb"; 
string strAccessSelect = "SELECT * FROM VariableTable"; 

// Create the dataset and add the Categories table to it: 
DataSet myDataSet = new DataSet(); 
OleDbConnection myAccessConn = new OleDbConnection(strAccessConn);    
OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn); 
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand); 
myAccessConn.Open(); 
myDataAdapter.Fill(myDataSet, "VariableTable"); 

DataRowCollection dra = myDataSet.Tables["VariableTable"].Rows; 
foreach (DataRow dr in dra) 
{ 
    dr[1] = "SV"; 
    break; 
} 
myDataAdapter.Update(myDataSet); 
+1

*更新用*?真? – 2012-02-02 03:52:50

回答

2

您需要使用OleDbCommandBuilder对象 - 它产生的单表命令。

OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect, myAccessConn); 
OleDbDataAdapter myDataAdapter = new OleDbDataAdapter(myAccessCommand); 
OleDbCommandBuilder cmd=new OleDbCommandBuilder(myDataAdapter); 

myDataAdapter.Fill(myDataSet, "VariableTable"); 
.. 

要uDate公司数据集的结果,

myDataAdapter.Update(myDataSet,"VariableTable"); 
+0

我收到错误'UpdateCommand的动态SQL生成不支持不返回任何键列信息的SelectCommand' – Manu 2012-02-02 04:44:35

+0

设置/添加主键到VariableTable表。 – adatapost 2012-02-02 04:45:18