Skip to content

database 数据库

使用前, 需要先使用 createPool 创建实例, 才能使用下列函数

在下面中, 会使用 db 代表使用 createPool 后的对象

js
// 文件路径
const db = require('database').createPool('@/objects/mxd-database.json')
// 对象
const db = require('database').createPool({
    url: '',
    username: '',
    password: ''
})

createPool 创建数据库操作对象

参数

参数类型说明
configobject / string传入 object 或 json 文件的路径

返回值

object 数据库操作对象

代码
javascript
// 文件路径
const db = require('database').createPool('@/objects/mxd-database.json')
// 对象
const db = require('database').createPool({
    url: '',
    username: '',
    password: ''
})

update

执行 新增 删除 修改 语句, 使用 ? 做参数占位符, 预编译

参数

参数类型说明
sqlstringsql
...argsobject占位符对应参数

返回值

number 受影响的行数

代码
js
const rows = db.update('UPDATE accounts SET pawssword = ? WHERE username = ?', 'ppwwdd', 'admin')

insert

执行 新增 语句, 使用 ? 做参数占位符, 预编译

他与 update 不同的是 返回值, insert 返回的是自动生成的 key参数

参数类型说明
sqlstringsql
...argsobject占位符对应参数

返回值object 自动生成的 key, 一般为 number

代码
javascript
const rows = db.insert('INSERT INTO user(name) VALUES (?)', '小兔子')

query 查询

执行 查询 语句, 使用 ? 做参数占位符, 预编译

参数

参数类型说明
sqlstringsql
...argsobject占位符对应参数

返回值

array 结果集

代码
javascript
const list = db.query('SELECT * FROM accounts WHERE loggedin != 0')

getConnection

获取一个新连接, 一般需要手动式事务时使用

参数

参数类型说明
autoCommitboolean可选, 设置自动提交

返回值

object

代码
javascript
const conn = db.getConnection()
try {
    conn.setAutoCommit(false)
    // 此处省略一万行代码 ...
    const rows = db.update('UPDATE accounts SET pawssword = ? WHERE username = ?', 'ppwwdd', 'admin')
    conn.commit()
} catch (e) {
    try {
        if (conn) {
            conn.rollback()
        }
    } catch (e) {
        console.log(e)
    }
    console.log(e)
} finally {
    try {
        if (conn) {
            conn.close();
        }
    } catch (e) {
        console.log(e)
    }
}

setAutoCommit 设置自动提交

开启或关闭事务的自动提交, 一般配合 getConnection 做手动式事务

参数

参数类型说明
enableboolean开启或关闭

返回值

代码
javascript
const conn = db.getConnection()
conn.setAutoCommit(false)

safeClose 关闭连接

关闭连接, 不会抛出异常

参数

返回值

代码
javascript
const conn = db.getConnection()
conn.safeClose()

execute

关闭自动提交并执行 sql

参数

参数类型说明
callbackfunction执行 sql 函数

返回值

代码
javascript
db.execute(conn => {
    conn.update('sql')
    conn.update('sql')
    conn.update('sql')
})