Appearance
SQL 操作(默认数据库)
db 是全局数据库操作对象,直接使用时操作默认数据库(config.yaml 中配置的 database.default)。
引入方式
db 为全局对象,无需 require,可直接使用。
API 列表
Exec — 执行写操作
执行 INSERT、UPDATE、DELETE 等 SQL 语句。
javascript
db.Exec("UPDATE users SET name = ? WHERE id = ?", "张三", 1)| 参数 | 类型 | 说明 |
|---|---|---|
| query | string | SQL 语句 |
| args ...any | any | 参数绑定值 |
Select — 查询多行
javascript
var users = db.Select("SELECT * FROM users WHERE age > ?", 18)
// 返回: [{id: 1, name: "张三", age: 20}, ...]| 参数 | 类型 | 说明 |
|---|---|---|
| query | string | SQL 语句 |
| args ...any | any | 参数绑定值 |
| 返回值 | []map[string]any | 结果数组 |
SelectOne — 查询单行
javascript
var user = db.SelectOne("SELECT * FROM users WHERE id = ?", 1)
// 返回: {id: 1, name: "张三", age: 20}| 参数 | 类型 | 说明 |
|---|---|---|
| query | string | SQL 语句 |
| args ...any | any | 参数绑定值 |
| 返回值 | map[string]any | 单条记录 |
SelectValue — 查询首行首列
javascript
var count = db.SelectValue("SELECT COUNT(*) FROM users")
// 返回: 100| 参数 | 类型 | 说明 |
|---|---|---|
| query | string | SQL 语句 |
| args ...any | any | 参数绑定值 |
| 返回值 | any | 单个值 |
Page — 分页查询
javascript
var result = db.Page(1, 20, "SELECT * FROM users WHERE age > ?", 18)
// 返回: {list: [...], total: 100, page: 1, pageSize: 20}| 参数 | 类型 | 说明 |
|---|---|---|
| query | string | SQL 语句 |
| pageNum | int | 页码(从 1 开始) |
| pageSize | int | 每页条数 |
| args ...any | any | 参数绑定值 |
| 返回值 | map[string]any | {list, total, page, pageSize} |
Trans — 事务执行
javascript
db.Trans(function(d) {
d.Exec("UPDATE accounts SET balance = balance - ? WHERE id = ?", 100, 1)
d.Exec("UPDATE accounts SET balance = balance + ? WHERE id = ?", 100, 2)
})| 参数 | 类型 | 说明 |
|---|---|---|
| callback | function | 事务回调函数,参数为事务数据库对象 |
参数绑定
推荐使用参数绑定方式防止 SQL 注入:
javascript
// 正确 ✓
db.Select("SELECT * FROM users WHERE id = ? AND name = ?", 1, "张三")
// 错误 ✗ — 存在 SQL 注入风险
db.Select("SELECT * FROM users WHERE id = " + id)完整示例
javascript
// 查询用户列表
var users = db.Select("SELECT * FROM users ORDER BY id DESC")
// 查询单个用户
var user = db.SelectOne("SELECT * FROM users WHERE id = ?", param["id"])
// 统计数量
var count = db.SelectValue("SELECT COUNT(*) FROM users")
// 分页查询
var page = db.Page(1, 10, "SELECT * FROM users WHERE name LIKE ?", "%" + param["keyword"] + "%")
// 插入数据
db.Exec("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", "张三", 25, "zhangsan@example.com")
// 更新数据
db.Exec("UPDATE users SET name = ? WHERE id = ?", "李四", 1)
// 删除数据
db.Exec("DELETE FROM users WHERE id = ?", 1)
// 事务操作
db.Trans(function(d) {
d.Exec("UPDATE stock SET count = count - 1 WHERE product_id = ?", 100)
d.Exec("INSERT INTO orders (product_id, user_id) VALUES (?, ?)", 100, 1)
})