项目中使用Web Sql
模拟移动端sqlite
数据库在pc做开发测试,因此学了一下Web Sql
。核心是三个API: openDatabase
,transaction
,executeSql
。
# openDatabase
用于创建一个数据库,参数如下:
- 数据库名称
- 版本号
- 描述文本
- 数据库大小
- 创建回调(可选,PS: 在
chrome
上没有执行回调,待研究)
const db = openDatabase('db', '1', 'desc', '1024*1024')
# transaction
transaction方法用以处理事务,当一条语句执行失败的时候,整个事务回滚。方法有三个参数:
- 包含事务内容的一个方法
- 执行失败回调函数(可选)
- 执行成功回调函数(可选)
# executeSql
executeSql方法用以执行SQL语句,返回结果,方法有四个参数:
- 查询字符串
- 用以替换查询字符串中问号的参数
- 执行成功回调函数(可选)
- 执行失败回调函数(可选)
const exeSucc = function(tx, result) {
console.log(tx)
console.log(result)
}
const exeErr = function(tx, err) {
console.log(tx)
console.log(err)
}
const txSucc = function() {
console.log('txSucc')
}
const txErr = function() {
console.log('txErr')
}
db.transaction(function(tx) {
tx.executeSql('CREATE TABLE IF NOT EXISTS testTable (id unique, name)', null, exeSucc,exeErr)
}, txErr, txSucc)
db.transaction(function(tx) {
tx.executeSql('INSERT INTO testTable (id, name) VALUES (0, "Byron")', null, exeSucc,exeErr)
}, txErr, txSucc)
db.transaction(function(tx) {
tx.executeSql('INSERT INTO testTable (id, name) VALUES (?, ?)', [1, 'gyh'], exeSucc,exeErr)
}, txErr, txSucc)