我正在努力弄清楚为什么我会一直收到这个错误。我搜索了这个和其他论坛,似乎没有答案可以提供帮助所以我会在这里问。
我正在尝试使用Titanium为Android创建基本照片目录应用。目录信息在sqlite数据库中是可靠的。
我可以创建数据库OK - 我可以在一个窗口中访问它的一些信息。然后,当我转到另一个窗口并尝试从表中获取更多信息时,它给出了错误:
未捕获错误:没有这样的表:照片:,同时编译SELECT ..........
见下面的代码:
这是从app.js打开的第一个窗口
此表显示正常 - 没有错误
// create var for the currentWindow
var currentWin = Ti.UI.currentWindow;
// set the data from the database to the array
//function setData() {
// create table view
var tableview = Ti.UI.createTableView({
});
//var db = Ti.Database.open('catalogue');
//db.remove();
var db = Ti.Database.install('catalogue.sqlite','photos');
var rows = db.execute('SELECT * FROM photos GROUP BY title');
// create the array
var dataArray = [];
while(rows.isValidRow()) {
var title = rows.fieldByName('title');
var id = rows.fieldByName('id');
dataArray.push({title:title, id:id, url:'catalogue_detail.js'});
rows.next();
}
tableview.setData(dataArray);
// add the tableView to the current window
currentWin.add(tableview);
tableview.addEventListener('click', function(e){
if (e.rowData.url)
{
var win = Ti.UI.createWindow({
id:e.rowData.id,
title:e.rowData.title,
url:e.rowData.url
});
win.open();
}
});
// call the setData function to attach the database results to the array
//setData();
然后我从上面打开catalogue_detail.js并得到错误
catalogue_detail.js
var win = Titanium.UI.currentWindow;
var id = win.id
var tableview = Titanium.UI.createTableView({
});
var db = Titanium.Database.open('catalogue.sqlite');//I have chanegd this to 'photos' and I get the same error
var sql = db.execute('SELECT title, location, photographer FROM photos where id="' + id + '"');
var title = sql.fieldByName('title');
var location = sql.fieldByName('location');
var photographer = sql.fieldByName('photographer');
// create the array
var dataArray = [];
while(sql.isValidRow()) {
var title = sql.fieldByName('title');
var location = sql.fieldByName('location');
var photographer = sql.fieldByName('photographer');
dataArray.push({title:title, location:location, photographer:photographer});
sql.next();
}
tableview.setData(dataArray);
win.add(tableview);
因此,我的数据库中的表格称为“照片'在一个窗口中打开,然后我尝试打开同一个数据库时出错?
我已经卸载了应用程序,重新创建了数据库,重命名了表格等,但仍然出现同样的错误......
我确信这是一件我想念的简单事情,但我很困惑!
感谢您的帮助。
JC
答案 0 :(得分:0)
尝试绝对路径:Ti.Database.open('catalogue.sqlite');
和Ti.Database.install('/catalogue.sqlite');
。
还要记住在从查询中检索所有数据时关闭与数据库的连接:
sql.close();
db.close();