mysql事务(提交和回滚)

2023-12-14

下面是我用于 MySqlTransaction 的代码,它运行完美...... 但问题是,因为我使用的是 mysqlcommand 的单个实例,所以我必须在其中使用唯一的参数。这毁了我的查询。有没有其他办法可以做......

我尝试在每次查询后处理 cmd 但没有用..:(


          con.Open()
            Dim sqlTran As MySqlTransaction = con.BeginTransaction()
            Dim cmd As MySqlCommand = con.CreateCommand()
            cmd.Transaction = sqlTran
            Dim str As String = Nothing
            Try
                cmd.CommandText = "SELECT myid FROM memaster where    Adate=@adate and ANo=@ano and ASource=@asrc"
                cmd.Parameters.AddWithValue("@adate", txt_bpass_adate.Text)
                cmd.Parameters.AddWithValue("@ano", txt_bpass_af.Text)
                cmd.Parameters.AddWithValue("@asrc", txt_bpass_asource.Text)
                str = cmd.ExecuteScalar()
                'cmd.Dispose()'
                If str Is Nothing Then

                    cmd.CommandText = "Insert into memaster (ADate,ANo,ASource) values (@aDate,@aNo,@aSRC)"
                    cmd.Parameters.AddWithValue("@aDate", txt_bpass_adate.Text)
                    cmd.Parameters.AddWithValue("@aNo", txt_bpass_af.Text)
                    cmd.Parameters.AddWithValue("@aSRC", txt_bpass_asource.Text)

     cmd.ExecuteNonQuery()
    End If
     sqlTran.Commit()

            Catch ex As Exception
                Try
                    sqlTran.Rollback()
                Catch ex1 As Exception

                End Try
            End Try

我实际上想在单个事务中触发超过 4 个查询,这样如果出现任何问题我可以回滚它......

如果有人有任何其他方法,请与我分享这个概念......


     For index As Integer = 1 To 5
                    cmd.CommandText = "Insert into detail (ID,BNos,SNo) values (@FID1,@BNo,@SeqN1)"
                    cmd.Parameters.AddWithValue("@FID1", str)
                    cmd.Parameters.AddWithValue("@BNo", str1)
                    cmd.Parameters.AddWithValue("@SeqN1", txt_bpass_sqn1.Text)
                    cmd.ExecuteNonQuery()


                Next

要在同一事务中执行多个命令,请确保将事务对象单独分配给每个命令:

Dim selectCmd As MySqlCommand = con.CreateCommand()
Dim insertCmd As MySqlCommand = con.CreateCommand()

selectCmd.CommandText = "SELECT ..."
insertCmd.CommandText = "INSERT ..."

Dim sqlTran As MySqlTransaction = con.BeginTransaction()
Try
  selectCmd.Transaction = sqlTran
  insertCmd.Transaction = sqlTran

  ...selectCmd.ExecuteScalar()...
  ...insertCmd.ExecuteNonQuery()...

  sqlTran.Commit()
Catch
  sqlTran.Rollback()
End Try

正如其他人提到的,通常是一个好主意Dispose()对象(即IDisposable)一旦你完成与他们的合作。处理掉物品后,它们就不能再被使用。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql事务(提交和回滚) 的相关文章

随机推荐

  • phpseclib sftp->put() 命令:文件内容只是一个字符串,不是预期的 PDF 文档

    我正在尝试使用 sftp put 将 PDF 文档从阶段服务器上传到远程位置 CODE sftp new SFTP config SFTP SERVER login to remote server if sftp gt login con
  • Excel VBA,从非活动工作表获取范围

    当我查看 临时 表时 该脚本运行良好 但是当我在另一张纸中时 复制命令失败 它给出了一个Application defined or object defined error Sheets Temp Range Cells 1 Cells
  • 显示:内联块在 safari 上不起作用

    我一直在我朋友的网站上解决菜单问题 该网站的网址是 colorfil webd pl sandbox sylwia 请查看菜单 主导航 右上角菜单 文件管理器菜单 在所有现代浏览器上 chrome FF opera 菜单看起来不错 在 Sa
  • 如何列出bash脚本中声明的变量?

    在我的 bash 脚本中 有很多变量 我必须做一些事情来将它们保存到文件中 我的问题是如何列出脚本中声明的所有变量并获取如下列表 VARIABLE1 abc VARIABLE2 def VARIABLE3 ghi set将输出变量 不幸的是
  • struts如何查找css文件?

    我正在使用 struts 2 在我的 JSP 中我有一个
  • 如何使用 ffmpeg 转换整个目录?

    如何通过命令行或批处理脚本使用 ffmpeg 转换整个目录 文件夹 For Linux and macOS这可以在一行中完成 使用参数扩展更改输出文件的文件扩展名 for i in avi do ffmpeg i i i mp4 done
  • 如何在不设置行高的情况下设置div中的行间距

    我有一个包含显示设置为内联块的元素的 div 这些包含的元素具有不同的高度 div 中生成的行具有不同的高度 具体取决于其中元素的高度 这就是我想要的 但我想在 div 的行之间添加一些空格 例如 具有背景颜色设置的相邻行中的元素之间应该有
  • 如何做相当于“限制不同”?

    如何将结果集限制为n给定列的不同值 其中实际行数可能更高 输入表 client id employer id other value 1 2 abc 1 3 defg 2 3 dkfjh 3 1 ldkfjkj 4 4 dlkfjk 4 5
  • 如何使用 ms sql 进行更新和排序

    理想情况下我想这样做 UPDATE TOP 10 messages SET status 10 WHERE status 0 ORDER BY priority DESC 中文 我想从数据库获取前 10 条可用 状态 0 消息并锁定它们 状
  • SQL Server 中临时表的范围

    我编写了一个存储过程来将数据从一个数据库导入和转换到另一个数据库 每次导入都会采用一个公司 ID 并导入与该公司相关的所有数据 为了帮助完成转换步骤 我使用临时表 作为脚本审查的一部分 我被告知要使用表变量而不是临时表 审阅者声称 如果我们
  • NSOpenPanel 在 Mac OSX 10.9 上需要更长的时间

    在 Mac OSX 10 9 上 我在我的应用程序中遇到 NSOpenPanel 问题 NSopenpanel 首次启动需要较长时间 我观察到 NSOpenPanel openPanel 第一次执行需要更长的时间 因此 第一次启动需要一些延
  • 与 mongodb 3.6 兼容的 documentdb 中的“功能不支持:$text”

    您好 我正在使用具有 mongodb 3 6 兼容性的 AWS documentDB 但在下面的函数中遇到了提到的错误 我不知道如何解决这个问题 索引创建 ScenarioSchema index friendlyId text steps
  • gh-pages -d 构建在“npm run deploy”上失败

    我正在尝试将我的 React 应用程序部署到 GitHub 页面 但遇到以下错误 The build folder is ready to be deployed To publish it at https jatinkumarg git
  • CodeIgniter 中不区分大小写的路由

    我已将其写入 CodeIgniter 的路由器中 route companyname profile 1 这工作正常 但是当我在 URL 中输入 CompanyName 时 它就不起作用了 这是因为大写字符 我想让这个路由不区分大小写 请建
  • 反序列化json对象不起作用

    我想将我的 json 对象反序列化到我的学生班级 var result JsonConvert DeserializeObject
  • Magento 主题中左栏的块类型是什么?

    我正在开发一个自定义 Magento 1 3 主题 并且想要添加一个左栏 我已经使用 html 创建了 template page html left phtml 在 2columns left phtml 中 我添加了以下内容 在 pag
  • 优化问题——寻找最大值

    我手头有一个问题可以简化为这样 假设二维平面 X Y 中有一堆随机点 其中对于每个 Y X 上可能有多个点 对于每个 X Y 上可能有多个点 每当选择一个点 Xi Yi 时 就不能选择其他 X Xi OR Y Yi 的点 我们必须选择最大点
  • onFormSubmit 触发器大约每隔几周随机发生两次

    首先 我想说这个问题与之前所有 Google Apps 脚本的表单提交触发器错误不同 这个触发两次 同时仍然可以访问前一个表单提交的所有表单提交信息 并再次触发程序 此外 额外的表单提交触发故障不会在电子表格表单响应中添加一行 这是因为用户
  • 在 Visual Studio 中安装/连接后,实体框架连接到 SQL Server Express 时出错

    为了以防万一我做错了什么 我上传了一个视频 这样你就可以看到我所做的每一步 我能够重现这个错误 视频链接 基本上 启动一个新的 MVC 3 项目并在一个简单的类上以正常方式使用 EF 我使用了以下连接字符串
  • mysql事务(提交和回滚)

    下面是我用于 MySqlTransaction 的代码 它运行完美 但问题是 因为我使用的是 mysqlcommand 的单个实例 所以我必须在其中使用唯一的参数 这毁了我的查询 有没有其他办法可以做 我尝试在每次查询后处理 cmd 但没有