2013-02-05 27 views
1

我對機器人開發非常陌生,但我正在研究一些SQL。我有它擴展了SQLOpenDatabaseHelper並在onCreate()方法的類我執行此:Android SQL沒有這樣的表?

 public static final String CREATE_DB = "CREATE TABLE " + TABLE_VOCAB_INFO 
     + "(" + COLUMN_NAME + " TEXT NOT NULL PRIMARY KEY," + COLUMN_URL 
     + " TEXT NOT NULL," + COLUMN_DOWNLOADED + "TEXT NOT NULL);"; 

然而,當我嘗試的東西添加到數據庫中,像這樣:

 //Adding method 
     ContentValues cv = new ContentValues(); 
     cv.put(COLUMN_NAME, "item " + i); 
     cv.put(COLUMN_URL, "random url"); 
     cv.put(COLUMN_DOWNLOADED, "true"); 
     open(); 
     database.insert(TABLE_VOCAB_INFO, null, cv); 

我得到的錯誤:

 (1) no such table: vocab_info 

我該如何解決這個問題?

編輯:更多信息。

我創建的數據庫在助手的onCreate()方法是這樣的:

 public void onCreate(SQLiteDatabase db) { 
     try { 
      db.execSQL(CREATE_DB); 
     } catch (SQLiteException e) { 
      System.out.println("Error with creation"); 
     } 
    } 

我使用添加方法類似這樣的

  public void onClick(View viewSelected) { 
    switch (viewSelected.getId()) { 
    case R.id.bDownload: 
     DatabaseManipulator dm = new DatabaseManipulator(this); 
     dm.open(); 
     dm.addList(null); 
     dm.addList(null); 
     dm.addList(null); 
     dm.addList(null); 
     dm.addList(null); 
     for (VocabList list : dm.getAllLists()) { 
      System.out.println(list.getName()); 
     } 
     dm.close(); 
     break; 

感謝訪問數據庫提前

+0

你能展示更多代碼嗎?例如,您如何從數據庫讀取數據(因爲我假設在讀取數據期間出現此錯誤)? –

+1

您還需要在列名和v型之間放置空格'COLUMN_DOWNLOADED +「TEXT NOT NULL);」;' –

+0

不,這個錯誤出現在我輸入的代碼中。 – NightStrider

回答

1

1)嘗試下面的create table語句。

public static final String CREATE_DB = "CREATE TABLE " + TABLE_VOCAB_INFO 
     + "(" + COLUMN_NAME + " TEXT NOT NULL PRIMARY KEY," + COLUMN_URL 
     + " TEXT NOT NULL," + COLUMN_DOWNLOADED + " TEXT NOT NULL);"; 

2)如果你在進行任何更改table structure或添加新的表,你就需要卸載re-install您的應用程序,如onCreate使用,如果沒有DB創建,調用一次如果數據庫已經存在的onCreate不會被調用,你的改變不會影響數據庫。

適用於OP >>您還可以通過更改數據庫版本來完成此操作。

+0

嗯 - 將數據庫版本從1更改爲2似乎工作。謝謝! – NightStrider