質問: new ContentValues(); values.put("date", date); values.put("memo", memo); values.put("category", category); values.put("price", price); db.insert("kakeibodb", null, values); } **【エラー文】** E/SQLiteLog: (20) statement aborts at 5: [INSERT INTO kakeibodb(date,memo,category,price) VALUES (?,?,?,?)] datatype mismatch E/SQLiteDatabase: Error inserting date=2018/12/26 memo=b category=食費 price=8 android.database.sqlite.SQLiteDatatypeMismatchException: datatype mismatch (code 20 SQLITE_MISMATCH)
回答: ご提示いただいたコードのSQL_CREATE_ENTRIESをその通り展開すると(TABLE_NAMEが"kakeibodb"なのは推測)、 ``` CREATE TABLE kakeibodb( date PRIMARY KEY, _id INTEGER PRIMARY KEY, date TEXT, category TEXT, price INTEGER, memo TEXT); ``` このようなSQL文になるのですが、これではテーブルは作成できないはずです。dateというカラムが2箇所ありますし、PRIMARY KEYが2つ設定されていますし。ただ、テーブルが作成できていないのにSQLiteDatatypeMismatchExceptionになるというのも不思議で、示されているコードと実際に動かしているのが違うのではないかと思えます。