2013-10-03 55 views
0

我一直在嘗試在我的android項目中使用sqlite創建一個數據庫,並不明白爲什麼我得到這個味精錯誤「沒有這樣的表」:S我以爲我創建數據庫好。任何幫助?ANDROID sqlite沒有這樣的表

這裏是我的代碼handler_sqlite類:

public class Handler_sqlite extends SQLiteOpenHelper { 

    public Handler_sqlite(Context ctx) 
    { 
     super (ctx, "MiBase", null, 1); 

    } 

    @Override 
    public void onCreate(SQLiteDatabase db) 
    { 
     String query = " CREATE TABLE IF NOT EXISTS usuarios (user VARCHAR PRIMARY KEY, password VARCHAR);" ; 
     db.execSQL(query); 

    } 

    @Override 
    public void onUpgrade(SQLiteDatabase db, int version_ant, int version_post) 
    { 
     db.execSQL("DROP TABLE IF EXISTS usuarios"); 
     onCreate(db); 
    } 

    public void insertarReg(String user, String password) 
    { 
     ContentValues valores = new ContentValues(); 
     valores.put("user", user); 
     valores.put("password", password); 
     this.getWritableDatabase().insert("usuarios",null,valores); 

    } 

    public void abrir() 
    { 
     this.getWritableDatabase(); 
    } 

    public void cerrar() 
    { 
     this.close(); 
    } 

    public String leer_user() 
    { 
     String columnas[]={"user","password"}; 
     Cursor c = this.getReadableDatabase().query("usuarios",columnas,null,null,null,null,null); 
     int iu; 
     iu = c.getColumnIndex("user"); 

     c.moveToLast(); 
     return c.getString(iu); 
    } 

    public String leer_password() 
    { 
     String columnas[]={"user","password"}; 
     Cursor c = this.getReadableDatabase().query("usuarios",columnas,null,null,null,null,null); 
     int ip; 
     ip = c.getColumnIndex("password"); 

     c.moveToLast(); 
     return c.getString(ip); 
    } 

} 

和我的主要代碼到BD引用:

Handler_sqlite helper = new Handler_sqlite(this); 
helper.abrir(); 
helper.insertarReg(username,passw); 
String username2 = helper.leer_user(); 
String password2 = helper.leer_password(); 

電流誤差:

錯誤插入密碼= X用戶= Y的android .database.sqlite.SQLiteException:沒有這樣的表:usuarios,而編譯時:INSERT INTO usuarios(密碼,用戶)值(?,?);

在此先感謝。

+2

如果您對onCreate()中的表進行任何更改,您需要增加數據庫版本 –

+0

您可以發佈堆棧跟蹤嗎?另外,請嘗試從表創建SQL語句中刪除「IF NOT EXISTS」。 – Emmanuel

+0

你是什麼意思?我只有在不存在的情況下才創建表格? – tknbr

回答

0

您確定create table語句正確嗎? (即exec不會拋出任何異常/錯誤/等)。

數據庫是否真的存在?如果你使用adb shell並運行 - 作爲你的應用程序,查看db目錄(名稱可能會從版本更改爲版本)並查看是否有usarios.sqlite文件。

你確定在你的代碼中沒有表名的拼寫錯誤嗎? (即使用常量而不是重新輸入全部)

0

當您將數據庫傳遞給構造函數時,數據庫的名稱應包含.db擴展名(即MiBase.db)。