У меня есть приложение для Android-андроида, которое использует адаптер sql в модели и странице, которая показывает данные в базе данных. Это работает.Сплав appcelerator не открывается модель базы данных
Однако, я добавил код для удаления всех строк в единственной таблице в db, и это не сработает. Я использую SQL вместо метода model/backbone для удаления. Нет ошибки, но кажется, что новая база данных установлена и на нее ссылается удаление, а не база данных, используемая моделью.
Я пробовал использовать тот же код из адаптера синхронизации и варианты того же, все безрезультатно. Для целей отладки я заменил delete на select code, и это возвращает 0 строк. База данных, используемая моделью, содержит строки.
Код работает в сервисе. Служба также использует модель, поэтому я не уверен, насколько она актуальна. Я не знаю, поддерживается ли модель открытой базой данных, а мой open не работает, а затем создает новую базу данных.
Это из синхронизации адаптера:
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
};