弄了一天还是不明白。我想大批量的向DB中的一个表插入数据。使用OracleDataAdapter.Update为什么总是插不进去
        Dim dt As DataTable = New DataTable
        dt.Columns(0).Unique = True        dt.Rows.Add(99, 99)
        dt.Rows.Add(98, 98)
        dt.Rows.Add(97, 97)        dt.AcceptChanges()        Dim cnn As OracleConnection = New OracleConnection("User Id= XXXX; Password=XXXX; Data Source=111.111.111.111/XXXX.XXXX")
        cnn.Open()
        Dim tran As OracleTransaction = cnn.BeginTransaction()        Dim cmd As OracleCommand = New OracleCommand("INSERT INTO MY_TABLE(SEQ_NUMBER,REC_KBN)   VALUES(:SEQ_NUMBER,:REC_KBN)")
        cmd.Connection = cnn        Dim prm_SEQ_NUMBER As OracleParameter = New OracleParameter("SEQ_NUMBER", OracleType.Number)
        Dim prm_REC_KBN As OracleParameter = New OracleParameter("REC_KBN", OracleType.Number)        cmd.Parameters.Add(prm_SEQ_NUMBER)
        cmd.Parameters(0).SourceVersion = DataRowVersion.Current
        cmd.Parameters.Add(prm_REC_KBN)
        cmd.Parameters(1).SourceVersion = DataRowVersion.Current        Dim adpt As OracleDataAdapter = New OracleDataAdapter()        adpt.InsertCommand = cmd        dt.Columns.Add("SEQ_NUMBER", GetType(Integer))
        dt.Columns.Add("REC_KBN", GetType(Integer))        Dim int_Count As Integer = adpt.Update(dt)        tran.Commit()        cnn.Close()

解决方案 »

  1.   

    smartstar2005
    需要用到的 可能会有其他方法,但在程序中好像只能这样吧? 上面的方法能正常执行通过,但不数据不能插进去
    你用了事务回退机制,当然不会报数据库方面的异常了(不信你把 tran.Commit()看报什么错误),大数据量的情况下最好把数据交给数据库去处理,比如2楼说的BCP.
      

  2.   

    把 dt.AcceptChanges() 去掉试试
      

  3.   

    努力学习把   
    dt.AcceptChanges()   去掉试试 
    不行啊去掉后直接倒掉
      

  4.   

       Dim   int_Count   As   Integer   =   adpt.Update(dt) 
    这句之前调试查看一下dt行的状态RowState都是什么,如果不是Added,那就插不进去,
      

  5.   

    把   dt.AcceptChanges()   去掉后登陆能执行。但登陆的字段是空的请大家帮忙啊。情况紧急
      

  6.   

    1、AcceptChanges()应该是在更新之后,再执行,楼主你UPDATE前执行,Update的时候,就读不到每一条记录的RowState了2、需要设置Parameters参数的SourceColumn属性,把DataTable的列绑定到参数上,这样更新的时候Adapter才读读取相应的值
      

  7.   

    问题已经解决,把       dt.AcceptChanges()       去掉就好使怪自己知识肤浅啊。劳烦各位了。感激不尽!