Javascript SQLite插入和删除查询出现错误,但不是SELECt查询
我正在使用SQLite(WebSQL)在Cordova移动应用程序中本地保存表单数据。Javascript SQLite插入和删除查询出现错误,但不是SELECt查询,javascript,sqlite,cordova,web-sql,Javascript,Sqlite,Cordova,Web Sql,我正在使用SQLite(WebSQL)在Cordova移动应用程序中本地保存表单数据。 下面的代码适用于同一表的SELECTquery,但不适用于INSERT或DELETE查询。 它将错误输出为:无法准备语句 const usersDB = { add: function (firstname, lastname, dob, email, phone, city, state, country) { databaseHandler.db.readTransaction(
下面的代码适用于同一表的
SELECT
query,但不适用于INSERT或DELETE查询。它将错误输出为:
无法准备语句
const usersDB = {
add: function (firstname, lastname, dob, email, phone, city, state, country) {
databaseHandler.db.readTransaction(
function (tx) {
tx.executeSql(
"INSERT INTO users(firstname, lastname, dob, email, phone, city, state, country) VALUES(?, ?, ?, ?, ?, ?, ?, ?)",
[firstname, lastname, dob, email, phone, city, state, country],
function (tx, results) {
console.log('User has been saved');
},
function (tx, error) {
console.log('ERROR: Failed to add user', error);
}
);
}
);
},
selectAll: function (listUsers) {
databaseHandler.db.readTransaction(
function (tx) {
tx.executeSql(
"SELECT * FROM users ORDER BY firstname",
[],
function (tx, results) {
listUsers(results);
},
function (tx, error) {
console.log('ERROR: Failed to list users', error);
}
);
}
);
}
}
我搜索了几十个讨论表单,但找不到关于此问题的解决方案。我们将提前感谢您的帮助 只读事务用于只读。写事务允许读和写。读事务由SELECT语句启动,写事务由CREATE、DELETE、DROP、INSERT或UPDATE等语句启动(统称为“写语句”)
.readTransaction()
用于只读查询,.transaction()
用于写查询。因此,在我的情况下,我应该这样使用它们:
const usersDB = {
add: function (firstname, lastname, dob, email, phone, city, state, country) {
databaseHandler.db.transaction( // Write mode
function (tx) {
tx.executeSql(
"INSERT INTO users(firstname, lastname, dob, email, phone, city, state, country) VALUES(?, ?, ?, ?, ?, ?, ?, ?)",
[firstname, lastname, dob, email, phone, city, state, country],
function (tx, results) {
console.log('User has been saved');
},
function (tx, error) {
console.log('ERROR: Failed to add user', error);
}
);
}
);
},
selectAll: function (listUsers) {
databaseHandler.db.readTransaction( // read-only mode
function (tx) {
tx.executeSql(
"SELECT * FROM users ORDER BY firstname",
[],
function (tx, results) {
listUsers(results);
},
function (tx, error) {
console.log('ERROR: Failed to list users', error);
}
);
}
);
}
}