1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

DatabaseHelper.onCreate()の走るタイミング

Last updated at Posted at 2019-06-19

#え?table users has no column named name (code 1)??
sqliteデータベースを作成し、値を格納しようとしたときに発生した。
SQL文は間違ってないはずなのになぁ。

##エラーの意味
そもそもこのエラーは何を意味しているのか。
エラーコードを読むとわかるが、指定したカラム(列)が存在しませんよ。というエラーだ。

##主な原因:
このエラーが発生してからググりまくって調べたところ、主に以下の点が主な原因みたい。

  • SQL文のミス:
    打ち間違いや文法ミスによるもの。

  • onCreate(SQLiteDatabase db) {}実行タイミング:
    私がハマっていたのはこちら。
    データベースが作成される際にonCreate()も実行される。
    データベースが作成されている状態のまま、プログラムが走ると、onCreate()には処理がいきません。
    そのため、onCreate()で使うSQL文を一生懸命直しても意味がありません。。。
    解決するには、アプリをアンインストールするか、deleteDatabase("sample.db");でデータベースを削除します。

#おわりに
言われてみればそりゃそうだって感じですが、ぼーっとしていたら見落としてしまう。
基本的なところにこそ落とし穴があるのかなぁ。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?