2015-11-13 105 views
-1

我在Android的工作室初學者...我的代碼只對表3列的作品,如果其他字段添加到表,logcat的將返回:SQLite的錯誤沒有這樣的列/語法錯誤近

沒有這樣的欄目:「FONE」

我有改變的代碼創建表的一部分,現在它返回另一個錯誤(我不知道是不是第一個錯誤依然存在):

SQLite的日誌: (1)near「)」:語法錯誤

可以肯定錯誤是在創建表或查詢的...

...我已經尋找答案和字段的名稱不是關鍵字,我試圖糾正逗號等...

我認爲SelectionArguments是解決方案,但我沒有經驗,我不知道究竟是如何把價值觀有...

這很奇怪,因爲我加場到TABLE的方式與其他方式相同,但現在它返回了這些錯誤,apk崩潰。

下面是表:

public void onCreate(SQLiteDatabase db) { 
     String livro = "CREATE TABLE livros " + 
         " (" + 
         " id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," + 
         " titulo TEXT NOT NULL," + 
         " autor TEXT NOT NULL," + 
         " pagina TEXT NOT NULL," + 
         " fone INTEGER," + 
         ")" ; 
     db.execSQL(livro); 

查詢的一部分:

String[] columns = {"id", "titulo", "autor", "pagina", "fone"}; 
     Cursor cursor = getWritableDatabase().query("livros", columns, null, null, null, null, null, null); 

     ArrayList<Livros> livros = new ArrayList<Livros>(); 

     while (cursor.moveToNext()){ 

      Livros livro = new Livros(); 

      livro.setId(cursor.getLong(0)); 
      livro.setTitulo(cursor.getString(1)); 
      livro.setAutor(cursor.getString(2)); 
      livro.setPagina(cursor.getString(3)); 
      livro.setFone((cursor.getInt(4))); ... 
+0

除了Maloubobola突出強調的問題,您可能無法理解數據庫創建與升級差異。閱讀此:http://stackoverflow.com/questions/21881992/when-is-sqliteopenhelper-oncreate-onupgrade-run – Kuffs

+0

清除您的應用程序的數據或卸載它,然後再次測試。 – madlymad

回答

4

你有一個額外,這條線後(以創建請求)

fone INTEGER, 

只是刪除它

+2

然後卸載並重新安裝您的應用程序,以便重新創建數據庫。 –

+0

好吧,現在應用程序打開,它似乎應用程序正在保存寄存器...但當手指按下打開註冊表,沒有任何反應......你有什麼想法嗎?你的答案很簡單,但幫助很大,謝謝。 –

+1

目前沒有。但是這似乎是一個新問題,所以用最少的資源發佈一個新問題來嘗試解決它。 – ThomasThiebaud

0
" fone INTEGER," + 
        ")" ; 

應該

" fone INTEGER)" ; 

你沒有在最後一欄後,使用逗號。

+1

這只是一個重複的Maloubobola答案 – Kuffs

+0

我寫這個答案時,第一次發佈,似乎並不正確。它在我發佈時進行了編輯。 Artie需要時間並且形成一個答案。僅僅因爲它在幾分鐘後出現,並不意味着我從另一篇文章中得到了這個想法。 @Kuffs –

+1

這就像我在堆棧上看到的許多帖子,它們之間有幾秒鐘或幾分鐘的時間。有些人花時間比其他人草擬答案。我很慢,如果,*在我開始寫*的時候,如果沒有正確的答案,我發佈它。在此期間,我無法解釋其他人發佈或編輯帖子的情況。否則,我可以發佈一個不完整的答案並對其進行編輯,以便獲得較早的時間戳。 –