Javascript数据库事务处理错误,无法准备没有列的语句
Javascript Database Transaction Error could not prepare statement has no column
我目前有一个问题,当我试图插入数据时,我收到一个错误,表列不存在,但我已经定义了它。我目前已经隔离了这个问题,并决定手动插入数据。一旦我通过了我的警报("手动插入数据"),一个弹出框显示Error was could not prepare statement (1 table expenses has no column named expenseDate) (Code 5)
。
我已经采取了这些SQL语句,并在SQLite3数据库中测试了它们,一切都检查好了。有趣的是,当我转到开发控制台->资源选项卡时,我看不到我的表。
如有任何帮助,不胜感激。
我的js如下:
var shortName='TravelExpenseReporting';
var version='0.1';
var displayName='TravelExpenseReporting';
var maxSize = 65536;
db = openDatabase(shortName,version,displayName,maxSize);
try {
db.transaction(
function(transaction) {
transaction.executeSql(
'CREATE TABLE IF NOT EXISTS expenses ' +
'(id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, ' +
'type TEXT NOT NULL, ' + 'amount DOUBLE NOT NULL, ' +
'vendor TEXT NOT NULL, ' + 'expensedate DATE NOT NULL);'
);
}
); // END transaction()
} catch(e) {
alert('error: ' + e);
return;
}
alert('inserting data manually');
try {
db.transaction(
function(transaction) {
transaction.executeSql(
'INSERT INTO expenses (type,amount,vendor,expensedate) VALUES (?,?,?,?);',
['expenseType',100,'vendor','01/01/2004'],
null,
errorHandler
);
}
); // END transaction()
} catch(e) {
alert('error: ' + e);
return;
}
问题是您没有正确处理错误。您不应该使用try/catch来获取错误。实际上,transaction()函数是异步的:这意味着如果程序继续运行,而transaction()函数没有完成它的工作。因此,当您看到警告"手动插入数据"时,事务()应该还没有完成。
事务方法接受2个函数参数:一个在请求成功时执行,一个在请求失败时执行:
db.transaction(
function(transaction) {
// success
// put your requests
},
function(error) {
// error
System.out.println(error);
}
);
现在,你可以看到错误了
由于transaction()方法是异步的,您应该注意插入请求不会在创建表请求之前执行。所以你应该把所有的请求放在同一个事务中:
db.transaction(
function(transaction) {
//create table
//insert
},
function(error) {
System.out.println(error);
}
);
相关文章:
- 可以't让我的if语句处理js中的html表单输入
- 我想做一个Web幻灯片事务处理
- 在 Phonegap 中的数据库事务语句之前发出警报触发
- 如何使用if语句jquery对数字进行动画处理
- WebSQL:处理SQL时出错:数量为''语句字符串中的s与参数计数不匹配
- 如何处理 JavaScript 条件语句中的可为空的对象
- if 和 else 语句处理的顺序是什么
- 对未调用的事务方法进行后续处理
- 在何处处理续集ORM查询语句中的错误
- 如何在使用 window.onerror 处理语句 1 中的错误时继续执行语句 2
- 使用 Handlebars.js 处理 executeSql 语句的结果
- 在 Node.js 中处理回滚的 MySQL 事务
- 这个 if 语句如何处理逗号
- 处理错误后提交索引数据库事务
- IndexedDB-无法创建多个对象存储并对其进行事务处理
- Firebase presence: onDisconnect进行事务处理
- Javascript数据库事务处理错误,无法准备没有列的语句
- React Native - `require()`语句异常处理
- 如何创建if语句来处理html中的空字符串
- 事务处理速度与查询速度