ボールドテキスト### 前提
android studioでカレンダーを作っています。
エミュレータ実行時に特定の処理を実行すると,アプリが落ちてしまいます.コードなどにエラーは,出ておらず原因がわかりません.
実現したいこと
・データベースへの挿入を正常に終了させたい
発生している問題・エラーメッセージ
エラーメッセージ
該当のソースコード
Java
1該当部分 2 3public void onSaveButtonClick(View view){ 4 //入力された内容を取得 5 EditText etNote = findViewById(R.id.etNote); 6 String note = etNote.getText().toString(); 7 8 //データベースヘルパーおぶしぇくとを作成 9 DatabaseHelper helper = new DatabaseHelper(MainActivity.this); 10 //データベースヘルパーオブジェクトからデータベース節毒オブジェクトを取得 11 SQLiteDatabase db = helper.getWritableDatabase(); 12 13 try{ 14 //まず,リストで選択された日付のデータを削除.その後インサート. 15 //削除用SQL文字列を用意 16 String sqlDelete = "DELETE FROM schedule WHERE _id = ?"; 17 SQLiteStatement stmt = db.compileStatement(sqlDelete); 18 stmt.bindLong(1, _dateId); 19 stmt.executeUpdateDelete(); 20 21 String sqlInsert = "INSERT INTO schedule (_id, note) VALUES (?, ?)"; 22 stmt = db.compileStatement(sqlInsert); 23 stmt.bindLong(1, _dateId); 24 stmt.bindString(2, note); 25 stmt.executeInsert(); 26 27 } 28 finally{ 29 db.close(); 30 }
public class DatabaseHelper extends SQLiteOpenHelper { /** * データベースファイル名の定数フィールド */ private static final String DATABASE_NAME = "schedule.db"; /** * バージョン情報の定数フィールド. */ private static final int DATABASE_VERSION = 1; /** * コンストラクタ. */ public DatabaseHelper(Context context){ //親クラスのコンストラクタ呼び出し super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db){ //テーブル作成用SQL文字列作成 StringBuilder sb = new StringBuilder(); sb.append("CREATE TABLE schedule("); sb.append("_id INTEGER PRIMARY KEY,"); sb.append("note TEXT"); sb.append(");"); String sql = sb.toString(); //SQLの実行 db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){ } }
試したこと
ソースコードで示した部分をコメント処理した場合,データベース以外の部分は正常に動くことを確認しています.また,作成する前に参考にしたプログラムは正常に動作しました.
補足情報(FW/ツールのバージョンなど)
java version "1.8.0_333"
回答2件
あなたの回答
tips
プレビュー