类对象支持库(不是扁平命令)。路径:支持库 → 扩展类库 → PostgreSQL类。
类型名必须写完整「PostgreSQL类」(也可写 Postgres类)。声明时自动创建,一般无需再调 创建*。
硬约束
- 类型名必须写「PostgreSQL类」。
- 能力范围:本类是 PostgreSQL 客户端(旁路
libpq.dll),不是 PostgreSQL 服务器端。可连接本机 / 局域网 / 公网主机。 - 远程连接前提:服务器已运行且允许连接(
listen_addresses、pg_hba.conf、防火墙放行常见端口5432);账号与密码正确;网络可达。 - 连接失败先查:主机/端口/账号/库名、
取错误(),以及程序目录是否有libpq.dll(及依赖 DLL)。 - 与 SQLite类 区别:SQLite 打开的是本地文件;PostgreSQL 打开的是网络上的服务器。
- 与 MySQL类 类似(旁路客户端 DLL),协议与默认端口不同(5432 / UTF8)。
快速开始
PostgreSQL类 db
如果 (db.打开("127.0.0.1", 5432, "postgres", "pass", "demo") == 假) {
输出(db.取错误())
} 否则 {
字段信息 cols[3]
cols[0].名称 = "id"
cols[0].类型 = #主键
cols[1].名称 = "姓名"
cols[1].类型 = #文本
cols[2].名称 = "年龄"
cols[2].类型 = #整数
db.建表("用户", cols)
db.插入("用户", "姓名,年龄", "张三,20")
db.查询("用户", "年龄=20")
判断循环 (db.取下一行()) {
输出(db.取文本("姓名"))
}
db.关闭()
}
旁路 DLL
- 默认加载程序目录
libpq.dll。 - 可用
置客户端库(路径或目录)指定。 - IDE 在工程引用本类时,从
redist/libpq/{x86|x64}或仓库third_party/libpq/{x86|x64}拷贝到 exe 旁。 - 放置说明见 third_party/libpq/README.md。
连接增强
db.置SSL模式("prefer")
db.置搜索路径("public")
db.打开("127.0.0.1", 5432, "postgres", "pass", "demo")
// 或:
db.打开连接串("host=127.0.0.1 port=5432 dbname=demo user=postgres password=pass sslmode=require")
插入后 取最后插入ID() 使用 RETURNING(优先 id 列,否则首列)。
替换插入("表","id,姓名","1,张三") 对首列(或第 4 参数冲突列)做 ON CONFLICT DO UPDATE。
BYTEA:结果行用 取字节集;条件更新用 更新字节集;CSV 插入可用 \xAABBCC。
方法摘要
| 方法 | 说明 |
|---|---|
打开 / 打开连接串 |
主机参数或 libpq 连接串;可先 置SSL模式 / 置搜索路径 |
关闭 / 是否打开 / 检测连接 / 取服务器版本 |
连接管理 |
选择库 |
按新库名重连(PostgreSQL 无 USE) |
建表 / 删表 / 清空表 / 表是否存在 / 字段是否存在 |
表结构 |
插入 / 忽略插入 / 批量添加 / 更新 / 删除 / 查询 |
高阶 CRUD(批量=多行 VALUES) |
替换插入 |
ON CONFLICT (…) DO UPDATE;默认真列,可传冲突列 |
取下一行 / 取文本 / 取字节集 / 取整数 / 取小数 / 取列数 / 取列名 |
结果集;更新字节集 写 BYTEA |
执行SQL / 查询SQL / 转义文本 |
原生 SQL |
开始事务 / 提交 / 回滚 |
事务 |
取最后插入ID |
RETURNING(无则回退 lastval()) |
取影响行数 / 取错误 |
辅助 |
字段类型常量:#文本 #整数 #小数 #逻辑 #二进制 #主键 #日期时间 #日期 #时间 #长文本(主键映射为 SERIAL PRIMARY KEY)。