扩展类(不是扁平命令库)。路径:支持库 → 扩展支持库 → MySQL类。类型名必须写 MySQL类(也接受 MYSQL类)。
高阶方法尽量不手写 SQL;需要时用 执行SQL / 查询SQL。
运行时动态加载 libmysql.dll(不静态链入)。使用本类时,YStudio 编译/发布会按工程架构自动把 DLL 拷到 exe 旁(源:redist/libmysql/{x86|x64} 或仓库 third_party/libmysql/...)。也可 置客户端库 手动指定。
快速开始
函数 主窗口.创建完毕 () {
MySQL类 db
db.置连接超时 (15)
如果真 (db.打开 ("127.0.0.1", 3306, "root", "pass", "demo") == 假) {
输出 (db.取错误 ())
返回
}
输出 (db.取服务器版本 ())
字段信息 cols[3]
cols[1].名称 = "id"
cols[1].类型 = #主键
cols[2].名称 = "姓名"
cols[2].类型 = #文本
cols[3].名称 = "年龄"
cols[3].类型 = #整数
db.建表 ("人", cols)
db.插入 ("人", "姓名,年龄", "张三,20")
db.查询 ("人", "年龄=20")
当 (db.取下一行 ()) {
输出 (db.取文本 ("姓名") + " " + 到文本 (db.取整数 ("年龄")))
}
db.关闭 ()
}
libmysql.dll 与打包
| 架构 | 仓库路径 | IDE 发行包路径 |
|---|---|---|
| x86 | third_party/libmysql/x86/libmysql.dll |
redist/libmysql/x86/ |
| x64 | third_party/libmysql/x64/libmysql.dll |
redist/libmysql/x64/ |
- F5 / 发布:工程模块含
mysql时,自动拷贝与工程架构一致的 DLL 到编译缓存目录与发布/{arch}/{cfg}/。 - 打包到文件夹:同样检测;若发布目录已有 DLL 也会一并带上。
- 勿混用架构(x64 exe + x86 DLL → 无法加载)。
MySQL 8
默认认证 caching_sha2_password:仓库自带的 Connector/C 6.1.11 可能握手失败 → 用户改 mysql_native_password,或换成与服务器同代的官方 libmysql.dll(覆盖 redist/third_party 对应架构即可)。
字段信息与类型常量
常量在 MySQL类/常量 节点:
| 常量 | 值 | MySQL |
|---|---|---|
#文本 |
1 | VARCHAR(255) |
#整数 |
2 | INT |
#小数 |
3 | DOUBLE |
#逻辑 |
4 | TINYINT(1) |
#二进制 |
5 | BLOB |
#主键 |
6 | INT AUTO_INCREMENT PRIMARY KEY |
#日期时间 |
7 | DATETIME |
#日期 |
8 | DATE |
#时间 |
9 | TIME |
#长文本 |
10 | LONGTEXT |
建表默认 ENGINE=InnoDB DEFAULT CHARSET=utf8mb4(事务才有效)。
打开与连接
db.置连接超时 (10) // 默认秒数;0=不限制
db.打开 ("127.0.0.1") // 端口 3306,字符集 utf8mb4
db.打开 ("127.0.0.1", 3306, "root", "pass", "demo", "utf8mb4", 20) // 单次超时 20 秒
db.选择库 ("demo")
输出 (db.取服务器版本 ())
输出 (db.取客户端库 ())
条件风格
与 SQLite 相同:列运算符值 或文本数组(AND)。
db.查询 ("user", "id=1")
db.查询 ("user", ["id=1", "age=20"])
db.更新 ("user", "年龄=21", "姓名=张三")
db.删除 ("user", "姓名=张三")
批量添加(动态行)
第三参为文本数组,每个元素一行 CSV(列与第二参对应)。行数不必事先固定:用空数组 + 数组添加 边采集边攒,再一次写入。
文本 行[] = []
// 网页采集循环里:
数组添加(行, 标题 + "," + 价格 + "," + 链接)
数组添加(行, 另一行CSV)
如果 (数组是否为空(行) == 假) {
db.批量添加("商品", "标题,价格,链接", 行)
}
也可用字面量:db.批量添加("商品", "标题,价格", ["A,1", "B,2"])。
内部走事务;任一行失败会回滚。旧名 插入批量 仍可用。
注意:CSV 值里若含逗号,请先自己拼好转义或改用循环 插入 / 执行SQL。
| 方法 | 说明 |
|---|---|
置客户端库 / 取客户端库 |
DLL 路径 |
置连接超时 / 取连接超时 |
默认连接超时(秒) |
打开(..., [超时秒=-1]) |
连接;-1=用默认超时 |
关闭 / 是否打开 / 选择库 / 检测连接 |
连接管理 |
取服务器版本 |
服务器版本串 |
建表 / 删表 / 清空表 / 表是否存在 / 字段是否存在 |
结构 |
插入 / 忽略插入 / 替换插入 / 批量添加 |
写入(旧名「插入批量」仍可用) |
更新 / 删除 |
无 SQL 写 |
查询 + 取下一行 + 取文本/整数/小数 |
游标读 |
取列数 / 取列名 / 取行数 |
元数据 |
转义文本 |
SQL 转义(高级) |
执行SQL / 查询SQL |
原生 SQL |
开始事务 / 提交 / 回滚 |
事务 |
取最后插入ID / 取影响行数 / 取错误 |
诊断 |
与取程序平台
取程序平台()(系统库)返回 32 或 64,表示当前程序位数。
若编译报「运行时库版本不一致」,多为诊断把中文 C3861 找不到标识符 误映射;请确认 IDE 旁 templates/ypl_runtime/libs 与 lib/ 同步(开发版会嵌套同步头文件)。与 MySQL DLL 架构选择无关时,也可不依赖该 API,改由 IDE 自动附带 DLL。
打包与 DLL
- 发行包须含
redist/libmysql/x86与x64(sync_dist_ide.ps1/stage_dev_pack.ps1已拷贝)。 - 用户工程用了
MySQL类→ 发布目录自动出现libmysql.dll。 - 手工第三方 DLL 仍可放「资源」;MySQL 官方客户端属 Y++ 内置依赖,不必再手动拷。
注意
- 类型名必须是
MySQL类。 - 未使用本类时不链
ypl_lib_mysql.lib。 - 签名以 IDE 支持库 → MySQL类 为准。
代码补全(全拼 / 简拼 / 双拼)
编辑器对中文方法名自动生成拼音键;类名另有别名:
| 名称 | 常用简拼 |
|---|---|
MySQL类 |
mysqll / mysqllei |
创建MySQL |
cjmysql |
批量添加 |
pltj |
打开 |
dk |
取服务器版本 |
qfwqbb |
忽略插入 |
hlcr |
置客户端库 |
zkhdk |
在 db. 后输入简拼即可过滤方法。详见 README 补全提示。