2013-10-03 4 views
0

내 안드로이드 프로젝트에서 sqlite를 사용하여 DB를 만들려고했는데 왜이 msg 오류가 "no such table"인지 이해하지 못합니다. S는 DB를 훌륭하게 만들 수 있다고 생각했습니다. 어떤 도움이 필요합니까?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를 안드로이드 .database.sqlite.SQLiteException : 해당 테이블 없음 : usuarios, 컴파일 중 : INSERT INTO usuarios (password, user) 값 (?,?);

미리 감사드립니다.

+2

onCreate()에서 테이블을 변경하면 데이터베이스 버전을 늘려야합니다 –

+0

stacktrace를 게시 할 수 있습니까? 또한 테이블 생성 SQL 문에서 IF NOT EXISTS를 삭제하십시오. – Emmanuel

+0

무엇을 의미합니까? 내가 존재하지 않는 경우에만 테이블을 만들고 있습니까? – tknbr

답변

0

create table 문이 맞습니까? (예 : exec는 예외/오류/기타를 throw하지 않습니다).

DB가 실제로 있습니까? 응용 프로그램으로 쉘을 실행하고 실행하는 경우 db 디렉토리 (이름이 버전마다 다를 수 있음)에서 usarios.sqlite 파일이 있는지 확인하십시오.

모든 코드에서 테이블 이름에 오타가 없습니까? (즉, 다시 입력하지 않고 상수를 사용하십시오.)

0

생성자에 전달할 때 데이터베이스 이름에 .db 확장자 (예 : MiBase.db)가 있어야합니다.

관련 문제