SQLiteOpenHelperのコツというか、なぜかDBに書かれないという自体があったのですがその理由と対策につてです。
SQLiteOpenHelperはAndroidでSQLiteを扱いやすくしてくれているクラスです。
DBをオープンする時にonCreateがCallされてテーブルを作成でき、テーブルのカラムが後から追加になった時に変更することもできます。
(バージョン管理的な事が出来る)
先日、データをDBに書き込めていないと言う連絡があり、調査したところ以下のような問題がおきていました。
### DBにデータを書き込めていない
調査したところ、DBがない時にCallされるonCreateがDBがある状態でCallされていました。
onCreateでテーブルを作成しているのですが、すでにテーブルがあったのでExceptionがおきていました。
### 対策
色々調べると、多くのページで紹介されているのがonCreateでCREATE TABLEをCallするのですが以下のようにしています。
```sql
`gutter:false;
CREATE TABLE hogetable ...
```
しかしながら、上記の場合すでにテーブルがある状態でCallされるとエラーになります。
そのような状況を回避するために以下のようにするよ良いです。
```sql
`gutter:false;
CREATE TABLE IF NOT EXISTS hogetable ...
```
テーブルが無ければ作成するようにすれば、仮に複数回Callされてもエラーを回避できます。
0 件のコメント :
コメントを投稿