MYSQL多线程增删改查纯源码 新增心跳功能

大标 2023年1月13日22:23:57教程评论1阅读模式
用mysql多线程查询东西,很容易崩溃,现在改进了,但是还是有待改进,不过基本功能已经完善,自用已经写了好几项目,借鉴的论坛的线程池,非常好用哈,
.版本 2
.支持库 spec
.支持库 mysql

.程序集 Mysql, , 公开
.程序集变量 集_Mysql句柄, 整数型
.程序集变量 集_许可证, 临界许可
.程序集变量 集_心跳句柄, 整数型
.程序集变量 集_心跳语句, 文本型

.子程序 _初始化, , , 当基于本类的对象被创建后,此方法会被自动调用

线程_初始化COM库 ()
集_许可证 = 临界_创建 ()
集_Mysql句柄 = 0

.子程序 _销毁, , , 当基于本类的对象被销毁前,此方法会被自动调用

线程_取消COM库 ()
临界_销毁 (集_许可证)
断开 ()

.子程序 心跳

调试输出 (“开始执行心跳线程”, 集_Mysql句柄)
.判断循环首 (真)
    临界_进入 (集_许可证)
    执行SQL语句 (集_Mysql句柄, 集_心跳语句)
    释放记录集 (取记录集 (集_Mysql句柄))  ' '释放记录集
    临界_退出 (集_许可证)
    Sleep (1000 × 300)
.判断循环尾 ()

.子程序 编码, 逻辑型, 公开
.参数 参_编码, 文本型
.局部变量 局_返回, 逻辑型

临界_进入 (集_许可证)
局_返回 = 执行SQL语句 (集_Mysql句柄, “set names '” + 参_编码 + “'”)
临界_退出 (集_许可证)
返回 (局_返回)

.子程序 错误, 文本型, 公开
.局部变量 ret_err, 文本型

临界_进入 (集_许可证)
取错误文本 (集_Mysql句柄, ret_err)
临界_退出 (集_许可证)
返回 (ret_err)

.子程序 句柄, 整数型, 公开
.参数 参_Mysql句柄, 整数型, 可空

.如果真 (是否为空 (参_Mysql句柄) = 假)
    集_Mysql句柄 = 参_Mysql句柄
.如果真结束
返回 (集_Mysql句柄)

.子程序 连接, 逻辑型, 公开, 连接时启动心跳线程,断开时销毁
.参数 参_服务器地址, 文本型
.参数 参_用户名, 文本型
.参数 参_密码, 文本型
.参数 参_数据库名, 文本型
.参数 参_端口, 整数型
.参数 参_心跳语句, 文本型

.如果真 (集_Mysql句柄 ≠ 0)
    关闭MySql (集_Mysql句柄)
.如果真结束
集_Mysql句柄 = 连接MySql (参_服务器地址, 参_用户名, 参_密码, 参_数据库名, 参_端口)
.如果真 (集_Mysql句柄 ≠ 0)
    集_心跳句柄 = 线程_启动1 (类回调_取类地址 (3, , , ), , )
.如果真结束
集_心跳语句 = 参_心跳语句
返回 (集_Mysql句柄 ≠ 0)

.子程序 断开, 逻辑型, 公开
.局部变量 局_返回, 逻辑型

.如果真 (集_Mysql句柄 ≠ 0)
    局_返回 = 关闭MySql (集_Mysql句柄)
    集_Mysql句柄 = 0
    线程_销毁 (集_心跳句柄)
    线程_关闭句柄 (集_心跳句柄)
.如果真结束
返回 (局_返回)

.子程序 增加, 逻辑型, 公开
.参数 参_数据表名, 文本型
.参数 参_赋值Json, 文本型
.局部变量 局_SQL语句, 文本型
.局部变量 局_Json, 类_json
.局部变量 局_返回, 逻辑型
.局部变量 局_属性名, 文本型, , "0"
.局部变量 局_计次, 整数型
.局部变量 局_增加字段, 文本型
.局部变量 局_增加内容, 文本型

临界_进入 (集_许可证)
.如果真 (局_Json.解析 (参_赋值Json))
    .计次循环首 (局_Json.取所有属性名 (局_属性名), 局_计次)
        .判断开始 (局_增加字段 = “”)
            局_增加字段 = 局_属性名 [局_计次]
        .默认
            局_增加字段 = 局_增加字段 + “, ” + 局_属性名 [局_计次]
        .判断结束
        .判断开始 (局_增加内容 = “”)
            局_增加内容 = “'” + 局_Json.取通用属性 (局_属性名 [局_计次]) + “'”
        .默认
            局_增加内容 = 局_增加内容 + “, ” + “'” + 局_Json.取通用属性 (局_属性名 [局_计次]) + “'”
        .判断结束

    .计次循环尾 ()
    .如果真 (取文本长度 (局_增加字段) ≠ 0 且 取文本长度 (局_增加内容) ≠ 0)
        局_SQL语句 = “INSERT INTO ” + 参_数据表名 + “ (” + 局_增加字段 + “) VALUES (” + 局_增加内容 + “)”
        局_返回 = 执行SQL语句 (集_Mysql句柄, 局_SQL语句)
        释放记录集 (取记录集 (集_Mysql句柄))  ' '释放记录集
    .如果真结束

.如果真结束
临界_退出 (集_许可证)
返回 (局_返回)

.子程序 删除, 逻辑型, 公开
.参数 参_数据表名, 文本型
.参数 参_删除条件, 文本型, , 格式: name='1' or pass='2' 
.局部变量 局_返回, 逻辑型
.局部变量 局_SQL语句, 文本型

临界_进入 (集_许可证)
局_SQL语句 = “DELETE FROM ” + 参_数据表名 + “ WHERE ” + 参_删除条件
局_返回 = 执行SQL语句 (集_Mysql句柄, 局_SQL语句)
释放记录集 (取记录集 (集_Mysql句柄))  ' '释放记录集
临界_退出 (集_许可证)
返回 (局_返回)

.子程序 修改, 逻辑型, 公开
.参数 参_数据表名, 文本型
.参数 参_条件语句, 文本型, , 格式:name='1' or pass='2' 
.参数 参_赋值Json, 文本型
.局部变量 局_返回, 逻辑型
.局部变量 局_SQL语句, 文本型
.局部变量 局_Json, 类_json
.局部变量 局_赋值语句, 文本型
.局部变量 局_属性名, 文本型, , "0"
.局部变量 局_计次, 整数型

临界_进入 (集_许可证)
.如果真 (局_Json.解析 (参_赋值Json))
    .计次循环首 (局_Json.取所有属性名 (局_属性名), 局_计次)
        .如果真 (局_赋值语句 = “”)
            局_赋值语句 = 局_属性名 [局_计次] + “='” + 局_Json.取通用属性 (局_属性名 [局_计次]) + “'”
            到循环尾 ()
        .如果真结束
        局_赋值语句 = 局_赋值语句 + “, ” + 局_属性名 [局_计次] + “='” + 局_Json.取通用属性 (局_属性名 [局_计次]) + “'”
    .计次循环尾 ()
    .如果真 (取文本长度 (局_赋值语句) ≠ 0)
        局_SQL语句 = “UPDATE ” + 参_数据表名 + “ SET ” + 局_赋值语句 + “ WHERE ” + 参_条件语句
        局_返回 = 执行SQL语句 (集_Mysql句柄, 局_SQL语句)
        释放记录集 (取记录集 (集_Mysql句柄))  ' '释放记录集
    .如果真结束

.如果真结束
临界_退出 (集_许可证)
返回 (局_返回)

.子程序 查找, 逻辑型, 公开
.参数 参_数据表名, 文本型
.参数 参_查找条件, 文本型, 可空, 格式: name='1' and pass='2'  为空查找全部 
.参数 参_返回Json, 文本型, 参考 可空 数组
.参数 局_返回字段, 文本型, 可空, id,name,pass,user
.局部变量 局_返回, 逻辑型
.局部变量 局_计次, 整数型
.局部变量 局_结果字段, 文本型
.局部变量 局_结果值, 文本型
.局部变量 局_结果Json, 文本型
.局部变量 局_SQL语句, 文本型
.局部变量 局_记录集句柄, 整数型
.局部变量 局_记录数量, 整数型

临界_进入 (集_许可证)
清除数组 (参_返回Json)
.判断开始 (是否为空 (参_查找条件))

    .判断开始 (是否为空 (局_返回字段))
        局_SQL语句 = “SELECT * FROM ” + 参_数据表名
    .默认
        局_SQL语句 = “SELECT ” + 局_返回字段 + “ FROM ” + 参_数据表名
    .判断结束

.默认

    .判断开始 (是否为空 (局_返回字段))
        局_SQL语句 = “SELECT * FROM ” + 参_数据表名 + “ WHERE ” + 参_查找条件
    .默认
        局_SQL语句 = “SELECT ” + 局_返回字段 + “ FROM ” + 参_数据表名 + “ WHERE ” + 参_查找条件
    .判断结束

.判断结束

局_返回 = 执行SQL语句 (集_Mysql句柄, 局_SQL语句)
.判断开始 (局_返回 = 真)
    局_记录集句柄 = 取记录集 (集_Mysql句柄)
    局_记录数量 = 取记录集行数 (局_记录集句柄)
    .计次循环首 (局_记录数量, )
        局_结果Json = “{”
        .计次循环首 (取字段总数 (局_记录集句柄), 局_计次)
            序号到字段名 (局_记录集句柄, 局_计次 - 1, 局_结果字段)
            读字段值 (局_记录集句柄, 局_结果字段, 局_结果值)
            .判断开始 (局_结果Json = “{”)
                局_结果Json = 局_结果Json + #引号 + 局_结果字段 + #引号 + “:” + #引号 + 局_结果值 + #引号
            .默认
                局_结果Json = 局_结果Json + “, ” + #引号 + 局_结果字段 + #引号 + “:” + #引号 + 局_结果值 + #引号
            .判断结束

        .计次循环尾 ()
        局_结果Json = 局_结果Json + “}”
        加入成员 (参_返回Json, 局_结果Json)
        到下一行 (局_记录集句柄)
    .计次循环尾 ()
    释放记录集 (局_记录集句柄)
.默认
    释放记录集 (取记录集 (集_Mysql句柄))  ' '释放记录集
.判断结束


临界_退出 (集_许可证)
返回 (局_返回)

weinxin
我的微信
微信扫一扫
大标
  • 本文由 发表于 2023年1月13日22:23:57
  • 转载请务必保留本文链接:https://www.tanhuibiao.com/3757.html
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: