javascript - SQLite "The given key was not present in the dictionary"

标签 javascript sqlite cordova windows-phone-8.1

我有使用 sql lite 插件的 cordova windows 应用程序。现在看到两个查询执行相同的操作:

1) "CREATE TABLE IF NOT EXISTS Settings (setting TEXT PRIMARY KEY, value TEXT NOT NULL)";
2) "CREATE TABLE IF NOT EXISTS Settings (setting TEXT, value TEXT NOT NULL, PRIMARY KEY(setting))";

不幸的是,第二个将会失败

"PRAGMA foreign_keys = ON";

不幸的是,我的表具有多列的主键,因此需要第二种语法。

example: PRIMARY KEY(setting, value)

知道为什么以及如何解决吗?

代码:

let db = window.openDatabase("MFS", "", "MFS database", 52428800);
db.transaction((tx) => {
    let query1 = "CREATE TABLE IF NOT EXISTS Settings (setting TEXT PRIMARY KEY, value TEXT NOT NULL)",
        query2 = "CREATE TABLE IF NOT EXISTS Settings (setting TEXT, value TEXT NOT NULL, PRIMARY KEY(setting))";
    tx.executeSql(query1/*query2*/, [], (tx, result, query) => {
    }, (tx, err, query) => {
        alert(err.message);
    }
});

最佳答案

我使用CREATE TABLE IF NOT EXISTS Settings(设置INTEGER PRIMARY KEY ...)定义主键,它的工作方式就像一个魅力:

db.transaction(createLocalTableSettings, errorLocalTable, successCreateLocalTableSettings);

function createLocalTableSettings(tx) {
    tx.executeSql('CREATE TABLE IF NOT EXISTS Settings (setting INTEGER PRIMARY KEY, value TEXT NOT NULL)');
}
function successCreateLocalTableSettings() {
        console.log('Settings Table successful created');
}
function errorLocalTable(err) {
        console.log("Error creating Settings Table! Processing SQL: " + err.sql + " Parameter: " + JSON.stringify(err.params));
}

希望这有帮助!

关于javascript - SQLite "The given key was not present in the dictionary",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33103244/

相关文章:

python-3.x - 如何正确插入整数sqlite3 python

android - ACCESS_FINE_LOCATION 权限通过 Ionic 移动应用程序中的使用功能进行更新

javascript - 使用 cordova/phonegap 连接到远程数据库

javascript - 从 Phonegap 的 SQLite 数据库中提取数据

javascript - 从 href 调用 javascript 函数

javascript - 如何在我的 jsp 页面中使用 javascript 显示弹出警报?

javascript - 序列化数组

sqlite - Windows Runtime 3.7.15.1 的 SQLite 文件名是什么?

android - android如何处理应用程序删除?剩余数据会怎样?

非标准字符的 PHP 过滤器