sql - Cordova/Sqlite 外键

标签 sql sqlite cordova

我正在尝试使用 Cordova 和 sqlite 运行一个简单的示例

这是我的javascript代码`

var dbName = "PresentationDB";
var dbVersion = "1.0";
var bdSize = 100000;
var displayName = "TTPresentationDB";
var db = null;

var app = {


initialize: function() {
    this.bindEvents();
},
bindEvents: function() {
    document.addEventListener('deviceready', this.onDeviceReady, false);
},

onDeviceReady: function() {
    app.receivedEvent('deviceready');
    db = createdb();
    alert(db);
    db.transaction(populatedb,errorCallBack,successCallBack);

 },
// Update DOM on a Received Event
receivedEvent: function(id) {

    console.log('Received Event: ' + id);
}



};

app.initialize();


function createdb()
{

 if (!window.openDatabase)
 {
   alert("Your browser does not support openDatabase");
 }
 alert("creating db..");
 return window.openDatabase(dbName, dbVersion, displayName, bdSize);

 }


function populatedb(tx)
{
tx.executeSql('CREATE TABLE IF NOT EXISTS PAGE (id_page INTEGER PRIMARY KEY 
   AUTOINCREMENT, title VARCHAR(255), description TEXT, num_visits DATE, 
   last_visited DATE)');
tx.executeSql('CREATE TABLE IF NOT EXISTS CONTENT (id_content INTEGER PRIMARY
   KEY AUTOINCREMENT, FOREIGN KEY(id_page) REFERENCES PAGE (id_page))');
tx.executeSql('CREATE TABLE IF NOT EXISTS ARTICLE (id_article INTEGER PRIMARY 
   KEY AUTOINCREMENT, title VARCHAR(255), text TEXT, description TEXT, FOREIGN 
   KEY (id_page) REFERENCES PAGE (id_page))');
tx.executeSql('INSERT INTO PAGE (title, description, num_visits, 
   last_visited) VALUES ("First Page", "Test Page", CURRENT_TIME, 
   CURRENT_TIME)');
tx.executeSql('INSERT INTO CONTENT (id_page) VALUES (1)');
tx.executeSql('INSERT INTO ARTICLE (title, text, description, id_page) VALUES 
   ("Article 1 Page 1", "Test Article", 1)');
tx.executeSql('INSERT INTO ARTICLE (title, text, description, id_page) VALUES 
   ("Article 2 Page 1", "Test Article", 1)');


}

function successCallBack()
{
    alert("Sucess");
    //alert("Returned rows = " + results.rows.length);
}


 function errorCallBack(tx, err)
 {
  alert("Error : " + err );
 }

function queryDB(tx)  
{
   tx.executeSql('SELECT * FROM DEMO', [], querySuccess, errorCB);

}

`

我添加外键时的行导致错误,有没有办法为 SQLITE 和 Cordova 创建关系数据库?

最佳答案

外键也应定义为属性。

CREATE TABLE IF NOT EXISTS CONTENT (id_content INTEGER PRIMARY
   KEY AUTOINCREMENT,id_page INTEGER, FOREIGN KEY(id_page) REFERENCES PAGE (id_page))'

一起工作正常Web SQL Sqlite 插件 .

关于sql - Cordova/Sqlite 外键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31268269/

相关文章:

sql - SQL Server 2005 中的 UNION ALL 性能

java - 在 TextView 中显示列的名称

java - 在 Cordova 中添加 android 平台时,请安装 android target 19(android 最新的 sdk)

sql - 'PIVOT' 附近的语法不正确

MySQL使用JOIN/GROUP BY时的情况

php - mysql根据另一个字段的条件更新

android - 用户输入的撇号使 android 应用程序崩溃(与 SQL 相关)

android - 帮助 SQLite 查询

javascript - 未定义phonertc - 浏览器上的Cordova Phonertc

blackberry - 黑莓手机上带有 phonegap 的 xhr