.版本 2

.支持库 EThread

.支持库 mysql

.程序集 类_连接池

.程序集变量 Handle, 数据库句柄, , "0", mysql连接句柄数组

.程序集变量 许可证, 整数型

.程序集变量 defLenght, 整数型, , , 通过“_取传输包长度限制”获得

.程序集变量 defBatch, 整数型, , , 默认传输批次百分比 1/100

.程序集变量 使用中, 整数型

.程序集变量 总数, 整数型

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

许可证 = 创建进入许可证 ()

defBatch = 100

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

.局部变量 m

.计次循环首 (取数组成员数 (Handle), m)

.如果真 (Handle [m].句柄 > 0)

进入许可区 (许可证)

断开MySql (Handle [m].句柄)

退出许可区 (许可证)

.如果真结束

.计次循环尾 ()

.子程序 初始化连接池, 整数型, 公开, 返回成功创建的句柄数

.参数 服务器ip, 文本型, 可空

.参数 数据库端口, 整数型, 可空

.参数 数据库账号, 文本型, 可空

.参数 数据库密码, 文本型, 可空

.参数 指定数据库, 文本型, 可空, 默认jokerproxy

.参数 设置编码, 文本型, 可空, 默认gbk

.参数 连接池数量, 整数型, 可空, 默认创建8条连接

.局部变量 mHandle, 数据库句柄

.局部变量 m

.如果真 (服务器ip = “”)

服务器ip = “localhost”

.如果真结束

.如果真 (数据库端口 < 1 或 数据库端口 > 65535)

数据库端口 = 3306

.如果真结束

.如果真 (设置编码 = “”)

设置编码 = “gbk”

.如果真结束

.如果真 (连接池数量 = 0)

连接池数量 = 8

.如果真结束

.计次循环首 (连接池数量, )

mHandle.句柄 = 连接MySql (服务器ip, 数据库账号, 数据库密码, 指定数据库, 数据库端口)

mHandle.当前使用库 = 指定数据库

.如果真 (mHandle.句柄 > 0)

.如果真 (执行SQL语句 (mHandle.句柄, “set names ” + 设置编码) = 假)  ' 设置编码失败

返回 (0)

.如果真结束

加入成员 (Handle, mHandle)

.如果真结束

.计次循环尾 ()

.如果真 (取数组成员数 (Handle) > 0)

使用中 = 0

总数 = 连接池数量

显示线程池数量 (使用中, 总数)

' _取传输包长度限制 (defLenght)  ' 取得sql语句长度限制

' ' _设置sql传输包长度限制 (3 × 1024 × 1024)

.如果真结束

返回 (取数组成员数 (Handle))

.子程序 停止mysql服务, , 公开

.局部变量 m

.计次循环首 (取数组成员数 (Handle), m)

.如果真 (Handle [m].句柄 > 0)

进入许可区 (许可证)

断开MySql (Handle [m].句柄)

退出许可区 (许可证)

.如果真结束

.计次循环尾 ()

清除数组 (Handle)

.子程序 取闲置句柄, 整数型, 公开, 从连接池中获取一个闲置的mysql句柄,使用完需要释放句柄

.参数 等待返回, 逻辑型, 可空, 直到有闲置的句柄可使用才返回

.局部变量 m

.局部变量 mHandle

.计次循环首 (取数组成员数 (Handle), m)

.如果真 (Handle [m].使用中 = 假)

mHandle = Handle [m].句柄

进入许可区 (许可证)

Handle [m].使用中 = 真  ' 设置句柄使用状态

使用中 = 使用中 + 1

显示线程池数量 (使用中, 总数)

退出许可区 (许可证)

返回 (mHandle)

.如果真结束

.计次循环尾 ()

.判断循环首 (等待返回 = 真)

.计次循环首 (取数组成员数 (Handle), m)

.如果真 (Handle [m].使用中 = 假)

mHandle = Handle [m].句柄

进入许可区 (许可证)

Handle [m].使用中 = 真  ' 设置句柄使用状态

使用中 = 使用中 + 1

显示线程池数量 (使用中, 总数)

退出许可区 (许可证)

返回 (mHandle)

.如果真结束

.计次循环尾 ()

' 处理事件 ()

.判断循环尾 ()

返回 (mHandle)

.子程序 释放句柄, 逻辑型, 公开, 释放句柄使用权

.参数 欲释放的句柄, 整数型

.局部变量 m

.计次循环首 (取数组成员数 (Handle), m)

.如果真 (Handle [m].句柄 = 欲释放的句柄)

进入许可区 (许可证)

Handle [m].使用中 = 假

使用中 = 使用中 - 1

显示线程池数量 (使用中, 总数)

退出许可区 (许可证)

返回 (真)

.如果真结束

.计次循环尾 ()

返回 (假)

.子程序 _执行sql语句, 整数型, 公开, 执行SQL语句

.参数 SQL语句, 文本型

.参数 是否取记录集, 逻辑型, 可空

.参数 设置编码, 逻辑型, 可空

.局部变量 Sta, 逻辑型

.局部变量 记录集句柄, 整数型

.局部变量 句柄, 整数型

.局部变量 错误, 文本型

句柄 = 取闲置句柄 (真)

.如果真 (设置编码)

' 执行SQL语句 (句柄, “SET NAMES 'gbk'”)

' 程序_延时 (200)

.如果真结束

Sta = 执行SQL语句 (句柄, SQL语句)

.如果真 (Sta = 假)

' 取错误文本 (句柄, 错误)

' 调试输出 (错误)

.如果真结束

.如果真 (是否取记录集)

记录集句柄 = 取记录集 (句柄)

.如果真结束

' 程序_延时 (取随机数 (100, 1000))

释放句柄 (句柄)

返回 (记录集句柄)