私はNotepadv#チュートリアルを終えました。そして、私はコンソール(adbシェル)の 'データ'ファイルのNotepadv3チュートリアルに接続します。私は何かを試した。誰も "DROP TABLE notes;" Android Notepadv3チュートリアルで?
- ノートテーブルを削除して再実行します。
- 作業しないでください。
- データファイル(dbファイル)を削除して再実行します。
- Work。
あなたはNotepadvの#のチュートリアルを働いた場合は、NotesDbAdapterクラスのいくつかの前処理について知っているかもしれません。そのコード位置で、コンストラクタで "dbを選択"、onUpgradeメソッドで "onCreateメソッドでテーブルを作成"、 "テーブルを更新"が見つかりました。
データベース(ファイルという名前のファイル)は、onCreateがコンストラクターの後に呼び出されたときにテーブルを作成します。それはうまくいかなかった。そのナンセンスに起因する2つの馬鹿のようなテストの上。誰もコンソール上にノートテーブルをドロップしますか?私は作成がうまくいかない理由を見つけることができません。
ps - 愚かな英語については申し訳ありません。
おそらく私はあなたが言ったようにSQLiteOpenHelperのonCreateをもっと詳細に見る必要があります。ありがとう。 – Gioskhan
あなたの助言によると、私は私の質問のようにdbにアクセスしてはなりません。しかし、コンストラクタが呼び出されたときにonCreateを呼び出すと、解決策を得ることができます。 DATABASE_CREATEに "IF NOT EXISTS"というクエリを追加してから、コンストラクタでonCreateを呼び出しました。それはとてもうまくいった!基本的には、私はアプリケーションを実行しているときにコンソール経由でテーブルをドロップしてはいけませんが、私は上記のほんの少しの作業でこのバカな疑問を解決します。 Thx再びすべて。 – Gioskhan
絶対に正しい - アプリケーションの外でデータベースを修正することは、潜在的に悪い考えです。しかし、必要に応じてアンドロイドに 'onCreate()'を呼び出させ、必要に応じてスキーマを修正する別の 'checkDBIntegrity()'関数を持たせることをお勧めします。これはあなたの 'onCreate'を単純に保ち、それが意図している仕事をし、プログラムの流れが明確になるのであなたのアプリはより保守的になります。 – RivieraKid