首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >OracleCommand更新不提交更改

OracleCommand更新不提交更改
EN

Stack Overflow用户
提问于 2010-10-12 00:03:54
回答 2查看 14.7K关注 0票数 1

我正在使用以下代码在oracle中更新表。它会执行,但更新不会提交。如果我用Oracle SQL Developer运行查询,它工作得很好。我遗漏了什么?SELECT语句按预期工作。

` `Dim As String = txtBillOfLadingNumber.Text.Trim

代码语言:javascript
复制
    Dim TrailerNumber As String = txtTrailerNumber.Text.Trim
    Dim CarrierCode As String = txtCarrierCode.Text.Trim
   Dim TransportationMethod As String = txtTransportationMethod.Text.Trim 
   Dim OracleCommand As New OracleCommand()
    With OracleCommand
        .Connection = OracleConnection
        .CommandType = CommandType.Text
        .CommandText = "UPDATE XXF_ASN_HEADERS SET BILL_OF_LADING_NUMBER ='" + BillOfLadingNumber + "',TRAILER_NUMBER ='" + TrailerNumber + "',CARRIER_CODE ='" + CarrierCode + "',TRANSPORTATION_METHOD ='" + TransportationMethod + "' WHERE HEADERID ='" + Request.QueryString("HeaderId") + "'"
    End With

    OracleConnection.Open()
    Dim result As Integer = OracleCommand.ExecuteNonQuery()
    OracleConnection.Close()

    If result = 1 Then Response.Redirect("default.aspx")`
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-10-12 11:13:59

感谢你们为我指明了正确的方向。这是最终的工作代码。诀窍是使用OracleTransaction,下面的代码工作得很棒。接下来是参数的使用。欲获知更多信息,请访问here

代码语言:javascript
复制
            Using dbConnection As New OracleConnection(OracleConnectionString)

                'Open the connection
                dbConnection.Open()

                Dim dbCommand As OracleCommand = dbConnection.CreateCommand()
                Dim dbTransaction As OracleTransaction

                'Start a local transaction 
                dbTransaction = dbConnection.BeginTransaction(IsolationLevel.ReadCommitted)
                'Assign transaction object for a pending local transaction
                dbCommand.Transaction = dbTransaction

                Try
                    dbCommand.CommandType = CommandType.Text
                    dbCommand.CommandText = "UPDATE XXF_ASN_HEADERS SET BILL_OF_LADING_NUMBER ='" + BillOfLadingNumber + "', TRAILER_NUMBER ='" + TrailerNumber + "', CARRIER_CODE ='" + CarrierCode + "', TRANSPORTATION_METHOD ='" + TransportationMethod + "' WHERE HEADERID ='" + Request.QueryString("HeaderId") + "'"
                    dbCommand.ExecuteScalar()
                    dbTransaction.Commit()
                    Response.Redirect("default.aspx")
                Catch ex As OracleException
                    'Rollback the transaction
                    dbTransaction.Rollback()
                    'display error details
                    lblUpdateQuery.Text = dbCommand.CommandText
                    lblDebug.Text = ex.Message.ToString
                End Try

            End Using
票数 2
EN

Stack Overflow用户

发布于 2010-10-12 00:09:59

我正在做的项目也使用OracleCommand。最大的区别在于,我们所有的数据库调用都转到存储过程,而不是直接更改数据库的动态sql。最有可能的是,您需要将update语句包装在"BEGIN“和"END”块中,并可能添加"COMMIT;“语句。

不过要当心了。如果您将回车符和换行符放入CommandText中,则至少有一个版本的.NET库将失败。只是用分号来分隔。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3907896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档