2013-02-17 86 views
0

即時通訊使用FlashBuilder 4.6,並有一個簡單的應用程序,我在工作。它使用sqlite數據庫,我有mxml組件 1)讓我添加一個新的記錄 2)列表記錄在數據庫與列表組件,然後當一個被點擊,3)使用輸入字段修改數據庫記錄中選擇更新sqlite數據庫拋出'沒有這樣的表'錯誤在fb 4.6

每個方面都做工精細,DB製作(如果犯規已經存在),列表組件顯示所有的記錄,並添加新條目工作,併成功地將它們存儲...

問題是在UPDATE功能。我知道該表存在於數據庫中,因爲我使用其他組件來添加新記錄並列出它們(已驗證數據庫和表名稱在所有函數中是一致的),但由於某些原因,當我嘗試執行以下UPDATE例行它吐出

SQLError: 'Error #3115: SQL Error.', details:'no such table: 'tblquiz'', operation:'execute', detailID:'2013' 

這裏是ActionScript3的代碼,我試着去運行,允許用戶更新數據庫記錄:

private function updateQuestion():void 
     { 

      var dbFile:File = File.applicationDirectory.resolvePath("database.db"); 
      var dbConnection:SQLConnection = new SQLConnection(); 
      dbConnection.open(dbFile); 

      var statement:SQLStatement = new SQLStatement(); 
      statement.sqlConnection = dbConnection; 

      // TAKE THE FORM FIELD VALUES AND USE THIS SQL STATEMENT TO UPDATE THE DATABASE RECORD WHERE THE ID MATCHES DATA.ID 
      statement.text = "UPDATE tblquiz SET question = '" + fieldQuestion + "', answerA = '" + fieldAnswerA + "', answerB = '" + fieldAnswerB + "', answerC = '" + fieldAnswerC + "' WHERE id = " + data.id; 
      trace(statement.text); 

      statement.execute(); 

      // GO BACK TO THE LIST COMPONENT TO SEE IF THE UPDATE WORKED 
      navigator.popView(); 

     } 

我缺少什麼嗎?一切引用數據庫和表的工作正常我沒有發現任何在我的谷歌搜索,擺脫這種錯誤的任何亮光。在通過USB連接的設備上以及在Im開發的臺式機上的AIR模擬器上發生錯誤。

在此先感謝!

UPDATE:問題就迎刃而解了......我的應用在其他一些地方和applicationStorageDirectory使用不同的路徑數據庫... applicationDirectory ....所以我改變了所有到:

File.applicationStorageDirectory.resolvePath("database.db"); 

.. 。我相信這是跨ios和android的方法(儘管android現在都是我所關心的)。感謝您的幫助 - 不能相信我早先錯過了。我會責備缺乏睡眠。

+0

你可以從命令行運行'sqlite3 database.db',並列出哪些表實際上在那個數據庫文件中? – 2013-02-17 05:35:42

+0

在哪裏exaclty我運行?從FB內? macbook pro im工作沒有安裝sqlite我不認爲,但它(sqlite)是在AIR中,所以它運行在AIR模擬器和我的android手機上的AIR。再一次,列表組件成功'獲取'存儲的值就好了......現在我不再獲取錯誤,但更新不會保存 - 只是保持顯示舊值,並且從不保存/存儲更新。當我遇到錯誤時,我確實有事要追逐,但現在絕對沒有什麼,只是沉默 - 但沒有成功保存更改。 – tamak 2013-02-17 05:58:13

+0

@RedCricket - 好吧,幾個小時的睡眠和醒來,再次解決這個問題...我DID使用命令行來檢查database.db ...它顯示的路徑爲 /private/tmp/database.db 這個線程似乎與我處理我認爲 - 或類似的東西類似,我只是不知道要改變什麼,以確保數據庫的副本與我的列表組件使用相同。 http://stackoverflow.com/questions/12160865/sql-error-no-such-table。在FB4.6中,我可以在src/bin-debug /文件夾 – tamak 2013-02-17 16:35:51

回答

2

問題解決了....原來我用不同的路徑在其他一些地方和applicationStorageDirectory在應用程序數據庫... applicationDirectory ....所以我改變了所有到:

File.applicationStorageDirectory.resolvePath("database.db"); 

。 ..我相信這是跨iOS和Android工作的方法(儘管目前Android都是我關心的)。感謝您的幫助 - 不能相信我早先錯過了。我會責備缺乏睡眠。

+0

中看到database.db,很高興看到自我回答的問題;)順便說一句,applicationStorageDirectory適用於所有平臺 - 不僅僅是ios和android – 2013-02-17 18:51:28

+0

我仍然拍着自己的背部....然後處理下一個問題......但解決新問題是讓它變得有趣的原因! (就像人們可以得到的那樣令人討厭)。 @LeeBurrows – tamak 2013-02-17 20:09:57

相關問題