当前博客:关于桌面端数据库事务解决方案

181 次浏览【转载需注明来源】

博客作者:【快码FOF编程】

个性签名:寒窗苦读十年一朝凤舞九天

在快码FOF中文编程中,提供了便捷的事务操作功能,例如Sqlite可以参考下述的SQL命令来执行事务:

BEGIN// 开启事务
COMMIT// 提交事务
ROLLBACK// 回滚事务

sqlite事务案例:

sqlite客户端.执行SQL语句_同步("BEGIN;",[],返回的连接ID)
sqlite客户端.执行SQL语句_同步("insert into user(user,password) values('111','3334455')",[],返回的连接ID)
sqlite客户端.执行SQL语句_同步("COMMIT;",[],返回的连接ID)

知识点:sqlite的事务需要自己手动执行回滚,例如:执行COMMIT是提交事务,而执行ROLLBACK是回滚事务 

重点知识:

在sqlserver和mysql中,提供了对应的便捷事务功能,例如sqlserver:

sqlserver客户端.事务执行SQL语句((执行状态) => { 调试输出(执行状态) }, [{ sql: 'insert into 测试表(测试,测试2) values(@测试,@测试2)', 参数化: { 测试: "123", 测试2: '1234' } }, { sql: 'insert into 测试表(测试,测试) values(@测试,@测试2)', 参数化: { 测试: "123", 测试2: 12354 } }])

同时也可以进行手动的操作,例如:

同步 sqlserver客户端.事务执行SQL语句_同步([],连接ID,{"类型":"开始事务"})
同步 sqlserver客户端.事务执行SQL语句_同步([],连接ID,{"类型":"保存事务"})
同步 sqlserver客户端.事务执行SQL语句_同步([],连接ID,{"类型":"回滚事务"})

例如:

局部变量 连接ID = sqlserver客户端.连接sqlserver(
    异步 (连接状态) => {
        同步 sqlserver客户端.事务执行SQL语句_同步([],连接ID,{"类型":"开始事务"})
        同步 sqlserver客户端.执行SQL语句_同步("insert into 测试表(测试,测试2) values(@测试,@测试2)", { 测试: "123", 测试2: "1234" }, 0);
        同步 sqlserver客户端.执行SQL语句_同步("insert into 测试表(测试,测试2) values(@测试,@测试2)", { 测试: "1235", 测试2: "12364" }, 0);
        同步 sqlserver客户端.执行SQL语句_同步("insert into 测试表(测试,测试2) values(@测试,@测试2)", { 测试: "1723", 测试2: "12734" }, 0);
        同步 sqlserver客户端.事务执行SQL语句_同步([],连接ID,{"类型":"回滚事务"})
    },
    "链接地址",
    "数据库账号",
    "数据库连接密码",
    "数据库名称",
    1433,
    20
);

上面是同步操作;当然也可以异步操作【但需要注意的是,异步操作下需要在回调事件中进行SQL的处理;同时SQL的处理也需要进行同步操作】:

sqlserver客户端.事务执行SQL语句(
    异步 (执行状态) => {
        调试输出(执行状态);
        同步 sqlserver客户端.执行SQL语句_同步("insert into 测试表(测试,测试2) values(@测试,@测试2)", { 测试: "123", 测试2: "1234" }, 0);
        同步 sqlserver客户端.执行SQL语句_同步("insert into 测试表(测试,测试2) values(@测试,@测试2)", { 测试: "1235", 测试2: "12364" }, 0);
        同步 sqlserver客户端.执行SQL语句_同步("insert into 测试表(测试,测试2) values(@测试,@测试2)", { 测试: "1723", 测试2: "12734" }, 0);
        sqlserver客户端.事务执行SQL语句((执行状态) => {调试输出(执行状态);},[],0,{"类型":"保存事务"});
    },
    [],
    0,
    {"类型":"开始事务"}
);

 

MYSQL事务:

上面介绍了SqlServer的事务操作方法,这里再来介绍一下Mysql的事务操作方法,mysql与sqlserver的操作方法一样; 下面展示一下用法:

便捷用法:

mysql客户端.事务执行SQL语句_同步([{sql:"",values: []},{sql:"",values: []}])

手动事务用法:

mysql客户端.事务执行SQL语句(异步 (状态) => 
{
    调试输出(状态);
    同步 mysql客户端.执行SQL语句_同步("insert into tablelist(姓名,年龄,口头禅) values('11','22','33')");
    同步 mysql客户端.执行SQL语句_同步("insert into tablelist(姓名,年龄,口头禅) values('11','22','33')");
    
    mysql客户端.事务执行SQL语句((状态) => {调试输出(状态);},[],连接ID,{ "类型": "回滚事务" });
    
},[],连接ID,{ "类型": "开始事务" });

值得注意的是,mysql的手动事务不支持同步命令,也就是不能使用“mysql客户端.事务执行SQL语句_同步”这个命令来进行手动事务操作。

默认排序
Generic placeholder image
Generic placeholder image
快码FOF编程 Time: 2023-08-21 11:22:59

sql事务的通用处理方案

Generic placeholder image
快码FOF编程 Time: 2023-09-01 16:41:28

事务通用方案来了

Generic placeholder image
快码FOF编程 Time: 2024-03-19 16:18:32

博客已更新,目前是最终解决方案


关于桌面端数据库事务解决方案