弄了一天还是不明白。我想大批量的向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()
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()
解决方案 »
- VS2010运行直接出现401.2 ,调试时没用IIS,authentication mode是forms要怎么设置forms
- 关于副窗口删除数据主窗口自动刷新问题
- 在VS2005中做的一个留言版是否可以直接发给个人邮箱呢?
- c# richtextbox的rtf格式
- 请教软件基本功能的实现问题?
- 如何通过Windows 服务,来启动一个FORM的EXE程序
- 请教一个C#的思路问题
- 有人知道18位身份证最后一位验证码怎么算吗,我的代码老是不对啊帮我看看好吗
- 如何获取Microsoft Agent角色的动作列表
- net framework版本不同导致调用第三方DLL异常
- 求个正则
- 为什么我的FORM一最大化或最小化就报错?
需要用到的 可能会有其他方法,但在程序中好像只能这样吧? 上面的方法能正常执行通过,但不数据不能插进去
你用了事务回退机制,当然不会报数据库方面的异常了(不信你把 tran.Commit()看报什么错误),大数据量的情况下最好把数据交给数据库去处理,比如2楼说的BCP.
dt.AcceptChanges() 去掉试试
不行啊去掉后直接倒掉
这句之前调试查看一下dt行的状态RowState都是什么,如果不是Added,那就插不进去,