Skip to content

SQL 操作(默认数据库) ​

db 是全局数据库操作对象,直接使用时操作默认数据库(config.yaml 中配置的 database.default)。

引入方式 ​

db 为全局对象,无需 require,可直接使用。

API 列表 ​

Exec — 执行写操作 ​

执行 INSERT、UPDATE、DELETE 等 SQL 语句。

javascript
db.Exec("UPDATE users SET name = ? WHERE id = ?", "张三", 1)
参数类型说明
querystringSQL 语句
args ...anyany参数绑定值

Select — 查询多行 ​

javascript
var users = db.Select("SELECT * FROM users WHERE age > ?", 18)
// 返回: [{id: 1, name: "张三", age: 20}, ...]
参数类型说明
querystringSQL 语句
args ...anyany参数绑定值
返回值[]map[string]any结果数组

SelectOne — 查询单行 ​

javascript
var user = db.SelectOne("SELECT * FROM users WHERE id = ?", 1)
// 返回: {id: 1, name: "张三", age: 20}
参数类型说明
querystringSQL 语句
args ...anyany参数绑定值
返回值map[string]any单条记录

SelectValue — 查询首行首列 ​

javascript
var count = db.SelectValue("SELECT COUNT(*) FROM users")
// 返回: 100
参数类型说明
querystringSQL 语句
args ...anyany参数绑定值
返回值any单个值

Page — 分页查询 ​

javascript
var result = db.Page(1, 20, "SELECT * FROM users WHERE age > ?", 18)
// 返回: {list: [...], total: 100, page: 1, pageSize: 20}
参数类型说明
querystringSQL 语句
pageNumint页码(从 1 开始)
pageSizeint每页条数
args ...anyany参数绑定值
返回值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)
})
参数类型说明
callbackfunction事务回调函数,参数为事务数据库对象

参数绑定 ​

推荐使用参数绑定方式防止 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)
})

版权所有.