2013-11-01 39 views
2

我有一個可怕的時間試圖找出爲什麼我不斷收到此錯誤。我搜索了這個和其他論壇,似乎沒有答案能夠幫助,所以我會問這裏。鈦手機 - 未捕獲錯誤:沒有這樣的表

我想爲使用Titanium的Android創建一個基本的照片目錄應用程序。目錄信息是在sqlite數據庫中發生的。

我可以創建數據庫確定 - 我可以在一個窗口中訪問它的一些信息。當我然後去到另一個窗口,並嘗試從表進一步信息它給我的錯誤:

Uncaught error: no such table: photos:, while compiling 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

我在工作注意片斷你有「變種DB = Ti.Database.install(‘catalogue.sqlite’,」相片');」但在unworking片段中,db設置爲「var db = Titanium.Database.open('catalogue.sqlite');」 - 這可能有任何相關性? –

回答

0

嘗試絕對路徑:Ti.Database.open('catalogue.sqlite');Ti.Database.install('/catalogue.sqlite');

還記得關於關閉連接到數據庫,當您從查詢檢索的所有數據:

sql.close(); 
db.close(); 
+0

謝謝 - 這有幫助,再加上我對其他問題失去了...再次感謝。 – pelagos