2017-12-06 11 views
-2

applicationにいくつかのテーブルが作成されていて、すべてうまくいきました。その後、私は同じアプローチでもう一つのテーブルを追加しようとしていますが、それは常に次のようなエラーにandroid studioのsqliteデータベースに別のテーブルを追加できません

android.database.sqlite.SQLiteExceptionいます:SELECT *:いいえ、そのような表:patients_record(コード1):、コンパイル時にandroid.app.ActivityThread.-wrap12(ActivityThread.java)でandroid.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2707) でandroid.app.ActivityThread.performLaunchActivity(ActivityThread.java:2646) でpatients_record FROM android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1460) android.os.Handler.dispatchMessage(Handler.java:102)android.os.Looper.loop(Looper.java:154)の ここにテーブルのクエリがあります。

private static final String PATIENT_TABLE_CREATE = "create table if not exists patients_record(patientId text primary key not null, " 
      + "patientFirstName text not null, patientLastName text not null, patientDepartment text not null, patientDoctorId text not null, patientRoom text not null);"; 

私は、以前に作成されている他のtablesDatabaseハンドラのonCreate()に文字列を追加しました。

+2

アプリをアンインストールしてもう一度インストールしてください –

+2

DBのバージョンを増やしてください。 –

+0

共有DbHandlerクラス – Omi

答えて

1

また、既存のテーブルに新しい列を追加したのと同じ状況に陥ってしまったので、DBバージョン番号を変更してこの問題を解決しました。

理由:あなたが最初のテーブルを作成するときに、あなたのonUpgradeメソッドを呼び出すまで、それはとてもonUpgrade方法をCALますあなたDB内の変更だけincrease your DB versionを作るために、再びそれを呼び出すことはありませんその後 SQLiteはonCreateメソッドを呼び出します。

+0

このメソッドは、それに応じて実装される 'onUpgrade'メソッドに依存します。 'onUpgrade'メソッドが必要なアクションを実行することがわかっている場合にのみ、このメソッドに助言することが賢明です。問題は 'onUpgrade'メソッドを示していないので、データベースバージョンを増やすことは間違いなく機能するとは言いがたいです。 – MikeT

+0

大丈夫ですが、既存のものをドロップダウンした後にアップグレードを実装し、その中に新しいテーブルを作成していると仮定します –

0

最も一般的な原因は、onCreateメソッドが自動的に実行されるときの誤解です。 SQLiteへの新規参入者は、SQLiteOpenHelperサブクラスのインスタンス(DatabaseHelperと呼ばれることも多い)が​​インスタンス化されるたびに実行されることをしばしば前提としています。データベースが作成されたときに

しかし、onCreateは自動的に呼び出されます。そのような単純な修正として、アプリケーションを開発するとき、データベースを削除することです。 Appが次に実行されると、onCreateメソッドが呼び出され、修正された構造が作成されます。

  • アプリケーションのデータを削除すると、アプリケーションのデータの一部としてデータベースが削除されます。

  • アプリケーションをアンインストールすると、アプリケーションのデータも削除されます。

  • 多くの場合、 'onUpgrade'メソッドにはテーブルをDROPSするコードが含まれ、onCreateメソッドが呼び出されます。 onUpgradeメソッドは、データベースのバージョンが増加すると呼び出されます。

上記の3つの方法のいずれかを使用すると、一部のデータが失われることに注意してください。

関連する問題