本人现在在做一个动态新增记录的方法,所用的操作是记录集的方式,  
当我用OracleDataAdapter里面的update(ds,Tablename)来更新数据的时候,系统出现了这样的提示:  
     未处理的“System.InvalidOperationException”类型的异常出现在  system.data.dll  中。  
 
     其他信息:  当传递具有新行的  DataRow  集合时,更新要求有效的  InsertCommand。  
     请问这个问题要如何解决才好啊??谢谢了!~~~

解决方案 »

  1.   

    检查一下是否写了OracleDataAdapter的InsertCommand 或者InsertCommand 是否正确
      

  2.   

    我没有写这个insertcommand命令,我新增记录是用DataRow里面的一个NewRow方法,所以这里面没有什么插入命令,
    我以前用的是:
    OracleConnection conn = new OracleConnection(myConnectionString);
    OracleDataAdapter oda = new OracleDataAdapter("select * from hzynet.useradmin order by id", conn);
    OracleCommandBuilder CB = new OracleCommandBuilder(oda);
    DataSet ds = new DataSet();
    oda.Fill(ds, "useradmin");
    //int TempID=int.Parse (ds.Tables["useradmin"].Rows [0]["id"].ToString()+1);
    DataRow dr = ds.Tables["useradmin"].NewRow(); dr["id"] = ID_TB.Text.ToString();
    dr["name"] = NAME_TB.Text.ToString();
    dr["sex"] = SEX_TB.Text.ToString();
    dr["year"] = YEAR_TB.Text.ToString();
    dr["class"] = CLASS_TB.Text.ToString();
    dr["zj"] = ZJ_TB.Text.ToString();
    dr["jsqx"] = JSQX_TB.Text.ToString();
    dr["tel"] = TEL_TB.Text.ToString();
    dr["jscs"] = JSCS_TB.Text.ToString();
    dr["djrq"] = DATA_TB.Text.ToString();
    dr["address"] = ADDRESS_TB.Text.ToString();
    dr["demo"] = DEMO_TB.Text.ToString(); ds.Tables["useradmin"].Rows.Add(dr);
    int errorNum = oda.Update(ds, "useradmin");
    if (errorNum == 1)
    {
    MessageBox.Show("添加成功!");
    }
    else
    {
    MessageBox.Show("添加失败");
    }
    以前这样做可以新增记录,但是现在我实现的是一个动态的新增方法。
    到了update更新的时候就出错了,哎!!!
    请问要如何解决啊???我现在急啊!!!
      

  3.   

    OracleDataAdapter需要设置它的InsertCommand
      

  4.   

    update需要DataAdapter的InsertCommand,deletecommand,selectommand,updatecommand,这四个最好写全了。
      

  5.   

    像我前面的那些代码没有写insertcommand命令,他同样能够新增保存。
      我最终的目地就是不想用SQL的那些插入命令,而用dateAdapter和dataset来添加数据!!