我有一个Android应用程序(使用cordova创建)已经存在且正在使用中。有些数据存储在设备数据库中。我必须进行更新,需要在数据库中的一个表中添加一列。我想添加新列而不需要清除应用程序存储,所以我创建了一个函数,尝试在执行依赖于该表的其他函数之前添加新列。这是改变代码的代码
var alterEntryTable = function()
{
qObj = $q.defer();
dbService.db.transaction(function(tx) {
tx.executeSql(
'ALTER TABLE entry ADD created_at TIMESTAMP ',
[],
function (tx, rss) {
qObj.resolve({error: false});
}, function (tx, rss) {
qObj.resolve({ error: true});
}
);
});
return qObj.promise;
};
问题是它总是返回错误。有人帮忙。谢谢
答案 0 :(得分:0)
错误处理程序中的第二个参数是SQLError对象。您可以记录其message属性以获取有关错误的详细信息。
function (tx, rss) {
console.log(rss.message);
qObj.resolve({ error: true});
}
错误消息是否有帮助?我认为您在SQL中缺少COLUMN
。它应该是ALTER TABLE entry ADD COLUMN created_at TIMESTAMP
。
此外timestamp
不是datatype in SQLite,但将其保留在那里无害。