以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 事务代码如何修改 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=193026) |
|
-- 作者:lin98 -- 发布时间:2024/8/10 10:59:00 -- 事务代码如何修改 需求:如果事务成功,表1的数据导入表2后,清空表1的数据,如果事务失败,回滚事务,回滚表1的数据,下面代码如何改?MYSQL数据源 Dim db = HySq-l.DataBaseFactory.CreateDatabase() \'获取数据库对象 Dim tran = db.BeginTransaction() \'开始一个事务 Dim sq-l As String = "INSERT INTO table2 (id, data) SELEC-T id, data FROM table1;" Try Dim res As Integer = db.ExecuteNonQuery(tran, sq-l, New HySq-l.ParameterPair("折扣", 0.3), New HySq-l.ParameterPair("客户", "abc")) res = db.ExecuteNonQuery(tran, sq-l, New HySq-l.ParameterPair("折扣", 0.2), New HySq-l.ParameterPair("客户", "CS01")) If res = 0 Then db.RollbackTransaction(tran, True) \'回滚事务,同时关闭数据库连接 msgbox("取消事务") Else db.CommitTransaction(tran, True) \'提交事务,同时关闭数据库连接 msgbox("执行成功") 删除表1 msgbox("表1已清空") End If Catch ex As Exception db.RollbackTransaction(tran, True) \'回滚事务,同时关闭数据库连接 msgbox("取消事务,原因:" & ex.Message) End Try |
|
-- 作者:有点蓝 -- 发布时间:2024/8/10 11:04:00 -- 不需要改什么。事务失败表1就不会删除,还回滚表1什么! |
|
-- 作者:lin98 -- 发布时间:2024/8/10 11:35:00 -- Dim res As Integer = db.ExecuteNonQuery(tran, sq-l, New HySq-l.ParameterPair("折扣", 0.3), New HySq-l.ParameterPair("客户", "abc")) res = db.ExecuteNonQuery(tran, sq-l, New HySq-l.ParameterPair("折扣", 0.2), New HySq-l.ParameterPair("客户", "CS01")) 问题一:这个是什么意思,没太理解,看帮助,好象是修改,配合修改,对指定字段的修改,是否这种理解? 问题二:这二行是配合修改,对表与表之间的复制,导入或删除没关系,是否可以删除?
|
|
-- 作者:有点蓝 -- 发布时间:2024/8/10 11:46:00 -- ExecuteNonQuery就是用来执行一条sql。使用参数化的方式执行,具体请去看组件的帮助 |
|
-- 作者:lin98 -- 发布时间:2024/8/16 10:16:00 --
|
|
-- 作者:有点蓝 -- 发布时间:2024/8/16 10:25:00 -- Try Dim res As Integer = db.ExecuteNonQuery(tran, sq-l) if res > 0 then res = db.ExecuteNonQuery(tran, “delete from table1 ”) If res = 0 Then db.RollbackTransaction(tran, True) \'回滚事务,同时关闭数据库连接 msgbox("取消事务") Else db.CommitTransaction(tran, True) \'提交事务,同时关闭数据库连接 msgbox("执行成功") End If End If Catch ex As Exception
|
|
-- 作者:lin98 -- 发布时间:2024/8/16 11:46:00 -- 问题1:if res > 0 then是事务成功意思?If res = 0 Then是事务失败的意思? 问题2:一个按键单击事件,有多个事务,狐表的操作代码(导入,复制,查询)事件,是否可以同放一个按键里?其程序运行先后如何处理?
|
|
-- 作者:有点蓝 -- 发布时间:2024/8/16 12:47:00 -- 1、帮助有说明,从来没有看帮助的习惯的吗!res表示ExecuteNonQuery执行后影响的行数,比如插入10行,res=10,=0表示没有插入任何行,后面的代码也就没有执行的必要了 2、理论任何代码都可以放到一起 代码正常按书写的先后顺序执行 导入代码1 复制代码2 查询代码3
|