更新oracle语句不起作用 [英] update oracle statement doesn't work
本文介绍了更新oracle语句不起作用的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在尝试使用VB.Net更新记录.这是代码.它没有任何错误.但是每次我运行此代码时,我都希望变量newbal
会增加.不会的这意味着更新语句不起作用.任何解决方法?
I am trying to update a record with VB.Net. This is the code. It doesn't give any error. But every time I run this code iI expect that the variable newbal
will increment. It doesn't happen. That means the update statement doesn't work. Any workaround?
Dim cmd5 As New OracleCommand
cmd5.Connection = conn
cmd5.CommandText = "SELECT * FROM d009022 WHERE prdacctid = :custid AND lbrcode = :lbrcode"
cmd5.Prepare()
cmd5.Parameters.Add(":custid", customernumber)
cmd5.Parameters.Add(":lbrcode", lbr)
Try
Dim drs As OracleDataReader = cmd5.ExecuteReader()
drs.Read()
Dim oldbal As Decimal = drs.Item("SHDCLRBALFCY")
Dim newbal As Integer = CInt(oldbal) + CInt(amount)
Dim cmd6 As New OracleCommand
cmd6.Connection = conn
cmd6.CommandText = "UPDATE d009022 SET shdclrbalfcy = :newbal WHERE prdacctid = :custnum AND lbrcode = :lbr"
cmd6.Prepare()
cmd6.BindByName = True
cmd6.Parameters.Add(":newbal", newbal)
cmd6.Parameters.Add(":custnum", customernumber)
cmd6.Parameters.Add(":lbr", lbr)
cmd6.ExecuteNonQuery()
推荐答案
You should use this structure to manage transactions with Oracle (see MSDN docs) :
Public Sub RunOracleTransaction(ByVal connectionString As String)
Using connection As New OracleConnection(connectionString)
connection.Open()
Dim command As OracleCommand = connection.CreateCommand()
Dim transaction As OracleTransaction
' Start a local transaction
transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted)
' Assign transaction object for a pending local transaction
command.Transaction = transaction
Try
command.CommandText = _
"INSERT INTO Dept (DeptNo, Dname, Loc) values (50, 'TECHNOLOGY', 'DENVER')"
command.ExecuteNonQuery()
command.CommandText = _
"INSERT INTO Dept (DeptNo, Dname, Loc) values (60, 'ENGINEERING', 'KANSAS CITY')"
command.ExecuteNonQuery()
transaction.Commit()
Console.WriteLine("Both records are written to database.")
Catch e As Exception
transaction.Rollback()
Console.WriteLine(e.ToString())
Console.WriteLine("Neither record was written to database.")
End Try
End Using
End Sub
这篇关于更新oracle语句不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文