2014-10-10 70 views
-3

我試圖將數據添加到以下的助手類,但我得到了'沒有這樣的表'錯誤。如何解決在Android Sqlite沒有這樣的表錯誤

如果我們使用普通的SQL查詢,它開始工作。但是這種類型的查詢不起作用。如何編寫這些類型的查詢,請解釋語法!

static class EmpHelper extends SQLiteOpenHelper{ 
     private static final String DATABASE_NAME = "empdatabase"; 
     private static final String TABLE_NAME = "emptable"; 
     private static final int DATABASE_VERSION = 2; 
     private static final String UID = "_id"; 
     private static final String NAME = "Name"; 
     private static final String PASSWORD = "Password"; 

     private static final String CREATE_TABLE = "CREATE TABLE" + TABLE_NAME 
       + "("+UID+ " INTEGER PRIMARY KEY AUTOINCREMENT," + NAME 
       + " VARCHAR(255)," + PASSWORD + "VARCHAR2(255)"+")"; 

     private static final String DROP_TABLE = "DROP TABLE IF EXISTS" 
       + TABLE_NAME; 
     private Context context; 


     public EmpHelper(Context context) { 
      super(context, DATABASE_NAME, null, DATABASE_VERSION); 
      this.context = context; 
      Message.message(context, "constructor called"); 
     } 

     @Override 
     public void onCreate(SQLiteDatabase db) { 
      // TODO Auto-generated method stub 

      try { 
       db.execSQL(CREATE_TABLE); 

      } catch (SQLException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
       } 
     } 

回答

1

再次新APK您有多個語法問題您的CREATE TABLE SQL和您在中發現異常。因此,SQLiteOpenHelper認爲即使未執行SQL,數據庫創建也是成功的。

要解決:"TABLE"TABLE_NAME之間

  • 添加空間。
  • PASSWORD"VARCHAR"之間加上空格。
  • 刪除catch。需要將異常引發給調用者。
  • 卸載您的應用程序,以便刪除舊的空數據庫並重新運行onCreate()

(對於這個問題,還有你的DROP_TABLE缺少空間。)

2

你應該改變這種

+ " VARCHAR(255)," + PASSWORD + "VARCHAR2(255)"+")"; 

+ " VARCHAR(255)," + PASSWORD + " VARCHAR2(255)"+")"; //add space after VARCHAR2(255) 

改變之後,你必須卸載應用程序,並安裝內置