我有一個用 VB.NET 撰寫的遺留應用程式,它使用 ODBC 連接來寫入 IBM DB2 資料庫。
它不作業。
我試圖查看值中是否有空格,如果它們不是來自同一型別,兩者都是字串,值是正確的,但我認為存在Command.ExecuteNonQuery()回傳零并且我收到訊息的問題有插入到資料庫中,但事實并非如此。
h始終為零,不拋出例外,只是不更新??。有任何想法嗎?
Private Sub Merge(ByVal connectionString As String, ByVal CaseNo As String, ByVal CancelledSurgeryId As String, ByVal ActiveSurgeryId As String, ByVal Cancelled As String, ByVal Active As String, ByVal location As String)
Using connection As OdbcConnection = New OdbcConnection(connectionString)
Dim Command As New OdbcCommand()
Dim transaction As OdbcTransaction
Command.Connection = connection
Dim a, b, c, d, e, f, g, h As Integer
Try
connection.Open()
transaction = connection.BeginTransaction()
Command.Connection = connection
Command.Transaction = transaction
Command.CommandText = "Update QS36F.ORPATSURG SET REQSTAT = 'F' WHERE CASENO = ? AND SURGERYID = ?"
Command.Parameters.Add("@CASENO", Odbc.OdbcType.VarChar).Value = CaseNo
Command.Parameters.Add("@SURGERID", Odbc.OdbcType.VarChar).Value = CancelledSurgeryId
a = Command.ExecuteNonQuery()
Command.CommandText = "delete FROM QS36F.orpctrx WHERE orderno = ? AND CASENO = ? " & _
"AND oper IN (SELECT oper FROM QS36F.orpctrx WHERE caseno = ? AND orderno = ?)"
Command.Parameters.Add("@orderno", Odbc.OdbcType.VarChar).Value = CancelledSurgeryId
Command.Parameters.Add("@CASENO", Odbc.OdbcType.VarChar).Value = CaseNo
Command.Parameters.Add("@caseno", Odbc.OdbcType.VarChar).Value = CaseNo
Command.Parameters.Add("@orderno", Odbc.OdbcType.VarChar).Value = ActiveSurgeryId
b = Command.ExecuteNonQuery()
Command.CommandText = "DELETE FROM QS36F.ORPCTRXM WHERE CASENO = ? AND ORDERNO = ?"
Command.Parameters.Add("@caseno", Odbc.OdbcType.VarChar).Value = CaseNo
Command.Parameters.Add("@orderno", Odbc.OdbcType.VarChar).Value = ActiveSurgeryId
d = Command.ExecuteNonQuery()
Command.CommandText = "update libor.invtrx set referno = ? , pono = ? where referno = ? and pono = ?"
Command.Parameters.Add("referno", Odbc.OdbcType.VarChar).Value = Active
Command.Parameters.Add("pono", Odbc.OdbcType.VarChar).Value = ActiveSurgeryId
Command.Parameters.Add("referno", Odbc.OdbcType.VarChar).Value = Cancelled
Command.Parameters.Add("pono", Odbc.OdbcType.VarChar).Value = CancelledSurgeryId
h = Command.ExecuteNonQuery()
transaction.Commit()
MessageBox.Show("Records successfully written to database.", "Success")
Catch ex As Exception
MessageBox.Show(ex.Message)
Try
transaction.Rollback()
Catch
End Try
End Try
End Using
End Sub
This is some sample data for the last one.
|ITEMID|TRXDATE|TRXTYPE|REFERNO |PONO |CASENO |
|------|-------|-------|---------------|-----------|--------|
|00244 |220609 |13 |31215380077 |196474 |01631892|
我在評論中發布的內容出現在所有查詢中,但只有這個不起作用?而且它沒有得到更新,有什么解決方法嗎?
在最初的問題之后,另一個有經驗的人看了看:如果我運行查詢,它就可以作業并且資料庫中填充了正確的值。也使用斷點搜索是給
多載解決失敗,因為沒有可訪問的“專案”接受此數量的引數
uj5u.com熱心網友回復:
如果ExecuteNonQuery回傳零,則表示操作成功但沒有修改任何記錄,這意味著資料庫不包含任何與您的WHERE子句匹配的記錄。您發布的代碼沒有任何問題,問題純粹與資料有關,您沒有向我們展示,顯然甚至沒有看。
uj5u.com熱心網友回復:
解決方案是使用 . 清除查詢之間的引數Command.Parameters.Clear()。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/490852.html
