0

同じデータベースで 2 つのテーブルを使用するアプリケーションがあります。以下に示すように、ヘルパー クラスでこれらのテーブルを作成して事前入力します。

public void onCreate(SQLiteDatabase db) {

    String sql = "CREATE  TABLE [weekmenu] ([weekmenuID] INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE, [receptenLijst] VARCHAR(50) NOT NULL )";
    db.execSQL(sql);

    sql = "INSERT INTO weekmenu (receptenLijst) values('0')"; db.execSQL(sql);


    sql = "CREATE  TABLE [recepten] ([receptID] INTEGER PRIMARY KEY  AUTOINCREMENT  NOT NULL  UNIQUE, [receptNaam] TEXT NOT NULL  UNIQUE, [receptURL] TEXT )";
    db.execSQL(sql);

    sql = "INSERT INTO recepten (receptNaam, receptURL) values('Macaroni met spek en broccoli', 'http://www.kooknet.be/recepten/hoofdgerecht/macaroni-met-spek-en-broccoli')"; db.execSQL(sql);
    sql = "INSERT INTO recepten (receptNaam, receptURL) values('Broccolipuree met spekblokjes en fishsticks', 'http://www.kooknet.be/recepten/hoofdgerecht/broccolipuree-met-spekblokjes-en-fishsticks')"; db.execSQL(sql);
    sql = "INSERT INTO recepten (receptNaam, receptURL) values('Hoeveomelet', 'http://www.kooknet.be/recepten/hoofdgerecht/hoeveomelet')"; db.execSQL(sql);
    sql = "INSERT INTO recepten (receptNaam, receptURL) values('Gevulde courgettes', 'http://www.kooknet.be/recepten/hoofdgerecht/gevulde-courgettes')"; db.execSQL(sql);   

}

別のアクティビティでは、ユーザーがボタンを押したときにテーブルの weekmenu を更新できるようにしたいと考えています。ユーザーがボタンを押すたびに、weekmenu の同じレコードが上書きされます (テーブルを更新することにより)。

        btnWeekmenuOpslaan.setOnClickListener(new View.OnClickListener() {
        // Database aanroepen
        SQLiteDatabase db = oData.getReadableDatabase();

        @Override
        public void onClick(View v) {


            ContentValues values = new ContentValues();
            String receptenLijst =
                    txtMaandagReceptID.getText().toString() + "-" +
                    txtDinsdagReceptID.getText().toString() + "-" +
                    txtWoensdagReceptID.getText().toString() + "-" +
                    txtDonderdagReceptID.getText().toString() + "-" +
                    txtVrijdagReceptID.getText().toString() + "-" +
                    txtZaterdagReceptID.getText().toString() + "-" +
                    txtZondagReceptID.getText().toString();

            // database updaten
            values.put("receptenLijst", receptenLijst);         
            db.update("weekmenu", values, "weekmenuID=?",new String[] {Long.toString(1)});
            db.close();
            oData.close();              
        }
    });

残念ながら、アクティビティが停止し、デバッグ モードで「weekmenu: そのようなテーブルは存在しません」というメッセージが表示されます。

誰でも私を助けてもらえますか?私は Stackoverflow に関する多くの投稿を読んできましたが、どれも役に立ちませんでした。

ありがとう!

4

1 に答える 1

0

あなたの犯人はここにいます:

SQLiteDatabase db = oData.getReadableDatabase();

書き込み可能なデータベースが必要です。読めるものではありません。

次のように変更します。

QLiteDatabase db = oData.getWritableDatabase();
于 2013-11-05T21:55:57.457 に答える