0

Android プロジェクトで sqlite を使用して DB を作成しようとしましたが、「そのようなテーブルはありません」というメッセージ エラーが表示される理由がわかりません。何か助けはありますか?

これが私のコード 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 (パスワード、ユーザー) 値 (?,?);

前もって感謝します。

4

2 に答える 2

1

コンストラクターに渡す場合、データベースの名前には .db 拡張子 (MiBase.db など) を含める必要があります。

于 2013-10-03T15:23:34.953 に答える
0

create table ステートメントは正しいですか? (つまり、exec は例外/エラー/その他をスローしません)。

DBは実際に存在しますか?adb シェルを使用してアプリを実行する場合は、db ディレクトリ (バージョンによって名前が異なる場合があります) を調べて、usarios.sqlite ファイルがあるかどうかを確認します。

すべてのコードでテーブル名にタイプミスはありませんか? (つまり、全体を再入力する代わりに定数を使用します)

于 2013-10-03T14:53:47.570 に答える