3


同じタイトルのトピックがたくさんあることは知っていますが、すべて試してみました。私は自分の問題を解決できませんでした。
私が得るエラーはまさにこれです:

android.database.sqlite.SQLiteException:読み取り専用データベースをバージョン0から1にアップグレードできません:/data/data/com.halilkaya.flashcard/databases/flashcarddb.db

実際には動作しますエミュレーターで、しかし私が私の電話にそれをインストールするとき、それは動作しません!

4

3 に答える 3

4

テーブルを削除して、以下のように再度アップグレードしてください。

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + LOCATION_TABLE);
    db.execSQL("DROP TABLE IF EXISTS " + PHONE_TABLE);
    // Create tables again
    onCreate(db);

}
于 2013-01-11T21:51:48.803 に答える
0

これにヒットすると、logcat の前に別の sql 例外がありました (私の HTC OneX テスト電話はクラッシュを非表示にして、単にクラッシュするのではなく、クラッシュを探すようにさせます)。アップグレード ロジックに不正なステートメントがありました。それを片付けたら、「読み取り専用データベースをアップグレードできません」というエラーが表示されなくなりました。

于 2014-04-01T17:43:51.410 に答える
0

これは、インテントを使用して onclick ボタンから開始されるクラスです。

public class disp_emails_sent extends Activity

......
protected void onCreate(Bundle bd) 
    {
        super.onCreate(bd);
        setContentView(R.layout.disp_db_res);

        lv = (ListView) findViewById(R.id.myEmail_list);

        List<String> arrayL = new ArrayList<String>();
        db_handler dbHand = new db_handler(disp_emails_sent.this);

上記の (disp_emails_sent.this) は通常、コンテキストを渡す場所です。this.getApplicationContext() は私にとってはうまくいきませんでしたが、これはうまくいきました。

それがどのように機能したかはわかりませんが、機能しました。

コミュニティから提供された上記の回答を試してみましたが、これは問題ではありませんでした。

持ってる人いたら解説お願いします。

于 2014-08-09T03:53:56.383 に答える