[英]Alloy appcelerator not opening model database
我有一個在模型中使用sql適配器的android合金應用程序,以及一個顯示數據庫中數據的頁面。 這可行。
但是,我添加了一些代碼來刪除db中唯一表中的所有行,但這不起作用。 我使用SQL而不是delete的模型/主干方法。 沒有錯誤,但是似乎已安裝了新數據庫,並由刪除引用了該數據庫,而不是模型使用的數據庫。
我已經嘗試過使用同步適配器中的相同代碼以及相同的變體,但都無濟於事。 出於調試目的,我將select替換為delete,它返回0行。 模型使用的數據庫確實包含行。
該代碼正在服務中運行。 該服務也使用該模型,因此我不確定它是否相關。 我不知道該模型是否使數據庫保持打開狀態,而我的打開則無提示地失敗,然后創建一個新數據庫。
這來自同步適配器:
Ti.API.debug('Installing sql database "' + dbFile + '" with name "' + dbName + '"');
var db = Ti.Database.install(dbFile, dbName);
[DEBUG] Installing sql database "/trackit.sqlite" with name "trackit"
所以我嘗試了:
Ti.API.debug('DELETING RECORDS');
var db = Ti.Database.install("/trackit.sqlite", "trackit");
// var db = Ti.Database.open('trackit');
var rs;
rs = db.execute('SELECT * FROM geo LIMIT 2;');
Ti.API.debug('ROW COUNT: ' + rs.rowCount);
while ( rs.isValidRow() ) {
Ti.API.debug('COOKIE: ' + rs.fieldByName('id'));
rs.next();
}
rs.close();
db.close();
結果是:
[DEBUG] COLLECTION SIZE: 0
[DEBUG] DELETING RECORDS
[DEBUG] ROW COUNT: 0
這是模型:
exports.definition = {
config: {
columns : {
"id" : 'INTEGER PRIMARY KEY AUTOINCREMENT',
"lon" : 'TEXT',
"lat" : 'TEXT',
"time_" : 'TEXT',
"now_" : 'TEXT',
"sent" : 'BOOL'
},
defaults : {
"sent" : 0
},
adapter : {
"db_file" : '/trackit.sqlite',
"type" : 'sql',
"collection_name" : 'geos',
"idAttribute" : 'id'
}
} // config
};
經過一番黑客攻擊后,事實證明collection_name應該是數據庫中的表名。 如果使用db_file,則安裝數據庫將使用來自sqlite_master的列名和類型創建表“ collection_name”。 即根本不使用模型的配置中的column_names。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.