string myStrConnection= "Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB="+strDirectory+";";
string myStrSelect="SELECT 克数 FROM "+strDirectory+" where 克数>4";
myConn = new OdbcConnection(myStrConnection);
DataSet myDs=new DataSet();
myConn.Open();
myAdapter =new OdbcDataAdapter(myStrSelect,myConn);
OdbcCommandBuilder myCommandBuilder = new OdbcCommandBuilder(myAdapter);
myAdapter.Fill(myDs,"aa");
myDs.Tables ["aa"].Rows [0]["克数"]="100";
myAdapter.Update(myDs,"aa"); 运行到myAdapter.Update(myDs,"aa");弹出异常:
未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。其他信息: 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。

解决方案 »

  1.   

    我在myAdapter.Fill(myDs,"aa");前加上:
    myAdapter.MissingSchemaAction =MissingSchemaAction.AddWithKey ;
    但异常仍旧。
    未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。其他信息: 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。
      

  2.   

    我在myAdapter.Fill(myDs,"aa");后加上:
    DataColumn[] keys=new DataColumn [1];
    keys[0]=myDs.Tables ["aa"].Columns ["克数"];
    myDs.Tables ["aa"].PrimaryKey =keys;
    但异常仍旧。
    未处理的“System.InvalidOperationException”类型的异常出现在 system.data.dll 中。其他信息: 对于不返回任何键列信息的 SelectCommand 不支持 UpdateCommand 的动态 SQL 生成。
      

  3.   

    在Visual FoxPro 中将这个表中得”克数“字段设置主键