現在AndroidStudioの勉強をしようと家計簿アプリを作ろうと思っています。
そこで入力画面でその日買った商品と金額、日付を入力する機能を作ろうと思い、DatePickerDialogを使って日付を選択し、その日付を取得してSQLiteで作ったデータベースに入れたいのですが、data mismatchと出て追加することができません。日付の部分なしで実行したときはエラーがでなかったので、日付の部分でエラーが発生していると思います。
現在の状況としましては、テーブル作成はTEXT型で作成し、EditTextからString型で「2018/12/28」のような形で受け取ってString型でいれようとしています。
調べ方が悪いのか、まったく解決しないので、よろしければご助言をお願いします。
追記
【データベースの構造】
private static final String PRIMARY_KEY = "date";
private static final String COLUMN_CATEGORY = "category";
private static final String COLUMN_PRICE= "price";
private static final String COLUMN_MEMO = "memo";
private static final String _ID = "_id";
private static final String SQL_CREATE_ENTRIES =
"CREATE TABLE " + TABLE_NAME + " (" +
PRIMARY_KEY + " PRIMARY KEY," +
_ID + " INTEGER PRIMARY KEY," +
PRIMARY_KEY + " TEXT," +
COLUMN_CATEGORY + " TEXT," +
COLUMN_PRICE + " INTEGER," +
COLUMN_MEMO + " TEXT)";
【データベースへの追加分】
//オブジェクトを取得
EditText gPrice = (EditText) findViewById(R.id.price);
Spinner gCategory = (Spinner) findViewById(R.id.category);
EditText gMemo = (EditText) findViewById(R.id.memo);
EditText gDate = (EditText) findViewById(R.id.date);
//値を取得 final int price = Integer.parseInt(gPrice.getText().toString()); final String category = (String)gCategory.getSelectedItem(); final String memo = gMemo.getText().toString(); final String date = gDate.getText().toString(); insertData(db, price, category, memo, date); } public void insertData(SQLiteDatabase db, int price, String category, String memo, String date){ ContentValues values = 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)
回答1件
あなたの回答
tips
プレビュー