出错语句:myOleDbDataAdapter.Update(myDataSet,"Test");  /*添加记录*/
出错信息:对于不返回任何基表信息的 SelectCommand 不支持动态 SQL 生成。我用.net写的数据操作类库,就是添加不进记录,读取和删除是用sql语句的就没这种问题(sqlserver2000上都行,不知道Oracle支持数据集填充吗?)。

解决方案 »

  1.   

    比如:
    string query = "select * from your_table";
    ICommand cmd = new OleDbCommand();
    cmd.CommandText = query;
    cmd.Connection = ...;
    myOleDbDataAdapter.SelectCommand = cmd;
    //...
      

  2.   

    第一种情况
    有些省了
    sSqltj="select * from Test";  //反回二列  Name,Num
    g_cn.DbCn.Open();
    myOleDbDataAdapter = new OleDbDataAdapter(sSqltj, g_cn.DbCn );
    ......
    myDataRow = myDataSet.Tables["Test"].NewRow();
    myDataRow["Name"]="hello";             /*只填了两例*/  
    myDataRow["Num"]="hello";                
    myDataSet.Tables["Test"].Rows.Add(myDataRow);
    ......
    myOleDbDataAdapter.Update(myDataSet,"Test");  /*更新数据*//#################出错:ROWID不能为空######################/第二种情况
    有些省了
    sSqltj="select Name,Num,RowId from Test";  //反回三列  Name,Num,ROWID
    g_cn.DbCn.Open();
    myOleDbDataAdapter = new OleDbDataAdapter(sSqltj, g_cn.DbCn );
    ......
    myDataRow = myDataSet.Tables["Test"].NewRow();
    myDataRow["Name"]="hello";             /*填了三例*/  
    myDataRow["Num"]="hello";
    myDataRow["ROWID"]="1234567";                
    myDataSet.Tables["Test"].Rows.Add(myDataRow);
    ......
    myOleDbDataAdapter.Update(myDataSet,"Test");  /*更新数据*//#################出错:ROWID1不能为空######################/怎么多出来了个ROWID1,ROWID到底什么东东啊,不会自动增长吗。
    我昨天才装了oracle,更sqlserver差好多,类库移植不上去,没时间看书了,帮帮忙解决一下这个问题。