質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

Q&A

解決済

2回答

1542閲覧

SQLiteデータベースの使い方がわからない

Shibou

総合スコア15

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

0グッド

0クリップ

投稿2020/04/27 07:10

編集2020/04/27 09:13

SQLiteOpenHelperを継承したCustomOpenHelperを使って、
日付ごとにメモを登録しようとしているのですが、
データの検索、更新がうまくいっておりません。

String型のdisplayをキーにして、
MemoActivityの生成と同時にデータ検索、表示、
onUpdateメソッドでデータの追加、更新をしようとしています。

データ更新時、onUpdateメソッドのtryまで、
変数が正しく入っており、アプリが落ちたりもしません。
Toastの表示も正常に動作しております。

しかし、再度アクティビティーを生成するとデータが登録されていないことを判明します。
データベースの登録、検索を正常にする方法を教えていただければ幸いです。
Android Studio:3.6.1
build:grandle:3.6.3

java

1 2import androidx.appcompat.app.AppCompatActivity; 3 4import android.content.Context; 5import android.content.Intent; 6import android.os.Bundle; 7import android.view.Gravity; 8import android.view.LayoutInflater; 9import android.view.View; 10import android.view.ViewGroup; 11import android.view.inputmethod.InputMethodManager; 12import android.widget.Button; 13import android.widget.EditText; 14import android.widget.ImageView; 15import android.widget.LinearLayout; 16import android.widget.TextView; 17import android.widget.Toast; 18 19import java.util.Calendar; 20 21import datebase.CustomOpenHelper; 22 23public class MemoActivity extends AppCompatActivity implements View.OnClickListener{ 24//EditTextを生成 25EditText editText; 26//データベース 27CustomOpenHelper customOpenHelper; 28//表示する日付 29String display; 30//表示する年月日 31int displayYear; 32int displayMonth; 33int displayDay; 34 35TextView textView; 36//Calendarクラス 37Calendar calendar = null; 38@Override 39protected void onCreate(Bundle savedInstanceState) { 40super.onCreate(savedInstanceState); 41setContentView(R.layout.activity_memo); 42 43//MainActivityからインテントを取得 44Intent intent = this.getIntent(); 45//値を取得 46String year = intent.getStringExtra("year"); //年 47String month = intent.getStringExtra("month"); //月 48String day = intent.getStringExtra("day"); 49//表示する文字列を作成 50display = year+"年"+month+"月"+day+"日"; 51 52//文字列を登録 53displayYear = Integer.parseInt(year); 54displayMonth = Integer.parseInt(month); 55displayDay = Integer.parseInt(day); 56 57//CalendarMakerの生成 58this.calendar = Calendar.getInstance(); 59calendar.set(displayYear,displayMonth,displayDay); 60 61//画面に表示 62textView = ((TextView)findViewById(R.id.year_month_day)); 63textView.setText(display); 64 65//EditTextを生成 66editText = findViewById(R.id.memo); 67//Focusの設定 68editText.setOnFocusChangeListener(new View.OnFocusChangeListener(){ 69@Override 70public void onFocusChange(View v, boolean hasFocus) { 71//EditTextのフォーカスが外れた場合 72if(!hasFocus){ 73//ソフトキーボードを非表示にする 74InputMethodManager imm = (InputMethodManager) 75getSystemService(Context.INPUT_METHOD_SERVICE); 76 77imm.hideSoftInputFromWindow(v.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 78} 79} 80}); 81LinearLayout linearLayout = ((LinearLayout)findViewById(R.id.layout)); 82linearLayout.setOnClickListener(this); 83 84//データベースを生成する 85this.customOpenHelper = new CustomOpenHelper(this); 86 87//EditTextに文字列をセットする 88String memo = customOpenHelper.getPlan(display); 89editText.setText(memo); 90} 91//EditTextに入力された文字列を取得する 92public void onUpdate(View v){ 93//EditTextのテキストを取得 94String text = editText.getText().toString(); 95//メモに入力がなかった場合 96if(text.equals("")){ 97ImageView imageView = new ImageView(this); 98imageView.setImageResource(R.drawable.no); 99Toast toast = new Toast(this); 100toast.setDuration(Toast.LENGTH_SHORT); 101toast.setView(imageView); 102toast.setGravity(Gravity.CENTER,0,0); 103toast.show(); 104}else{//メモに入力があった場合 105//データベースに登録する 106this.customOpenHelper.addMemo(display,text); 107Toast toast = new Toast(this); 108toast.makeText(this,"登録しました",Toast.LENGTH_SHORT).show(); 109} 110} 111//日付を前にずらす 112public void onPrevious(View v){ 113this.calendar.add(Calendar.DAY_OF_MONTH,-1); 114this.getDate(); 115String date = displayYear+"年"+displayMonth+"月"+displayDay+"日"; 116textView.setText(date); 117} 118//日付を後ろにずらす 119public void onNext(View v){ 120this.calendar.add(Calendar.DAY_OF_MONTH,1); 121this.getDate(); 122String date = displayYear+"年"+displayMonth+"月"+displayDay+"日"; 123textView.setText(date); 124} 125//戻るボタン"" 126public void onDelete(View v){ 127//アクティビティーの破棄 128finish(); 129} 130@Override 131public void onClick(View v) { 132//ボタンにフォーカスを移動させる 133Button button = ((Button)findViewById(R.id.update)); 134button.setFocusable(true); 135button.setFocusableInTouchMode(true); 136button.requestFocus(); 137} 138//年月日の取得 139private void getDate(){ 140this.displayYear = calendar.get(Calendar.YEAR); 141this.displayMonth = calendar.get(Calendar.MONTH); 142this.displayDay = calendar.get(Calendar.DATE); 143} 144}

java

1import android.content.ContentValues; 2import android.content.Context; 3import android.database.Cursor; 4import android.database.sqlite.SQLiteDatabase; 5import android.database.sqlite.SQLiteOpenHelper; 6 7 8public class CustomOpenHelper extends SQLiteOpenHelper { 9 //データベースの名前 10 private static final String DB_NAME ="calendar"; 11 //バージョン管理 12 private static final int DB_VERSION = 1; 13 //テーブル作成SQL 14 private static final String CREATE_TABLE_MESSAGES =""+ 15 "CREATE TABLE calendar("+ 16 "date TEXT PRIMARY KEY,"+ 17 "memo TEXT"+ 18 ")"; 19 //データベース 20 private SQLiteDatabase db = null; 21 22 public CustomOpenHelper(Context context){ 23 super(context,DB_NAME,null,DB_VERSION); 24 } 25 26 @Override 27 public void onCreate(SQLiteDatabase db) { 28 //テーブル作成 29 db.execSQL(CREATE_TABLE_MESSAGES); 30 } 31 32 @Override 33 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 34 35 } 36 //メモを保存する 37 public void addMemo(String date,String memo){ 38 //メモを取得 39 String addOrUpdate = this.getMemo(date); 40 this.db = this.getWritableDatabase(); 41 //ContentValuesにデータを入れる 42 ContentValues val = new ContentValues(); 43 val.put("date",date); 44 val.put("memo",memo); 45 try{ 46 //メモの登録がされていなかった場合 47 if(addOrUpdate.equals("")){ 48 //メモを追加する 49 db.insert(this.DB_NAME,null,val); 50 }else{ 51 //メモを更新する 52 db.update(this.DB_NAME,val,"date = ?",new String[]{memo}); 53 } 54 }finally { 55 db.close(); 56 } 57 } 58 //メモを返す 59 public String getPlan(String date){ 60 return this.getMemo(date); 61 } 62 //データが保存してあるかを確認する 63 private String getMemo(String date){ 64 //返すmemoの箱 65 String memo = ""; 66 //読み込み用のデータベース 67 this.db = this.getReadableDatabase(); 68 try{ 69 String sql = ""; 70 Cursor cursor = db.query( 71 this.DB_NAME, 72 new String[]{"memo"}, 73 "date == ?", 74 new String[]{"memo"}, 75 null,null,null,null 76 ); 77 //データが存在する場合 78 if(cursor.moveToFirst()){ 79 memo = cursor.getString(0); 80 } 81 }finally { 82 db.close(); 83 } 84 return memo; 85 } 86 87 public SQLiteDatabase getDb() { 88 return db; 89 } 90}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2020/04/27 07:44

「機能しません」や「動きません」や「うまくいきません」 これは誰にも何も伝えない表現です。 実際に起きている現象を記載してください。 あと、何が分かっていて何が分かっていないかも明確にしてください。
m.ts10806

2020/04/27 07:44

特にDBなど外部の仕組みを利用していると、コードだけが原因とは限りませんからね。 環境情報全て提示すること、ここまでの手順詳細 これらも追記してください。
Shibou

2020/04/27 08:10

失礼しました。 これの変数displayをキーとして使って、アクティビティーの生成と同時に、 データの引き出し、onUpdateメソッドを使ってのデータ登録をしようとしております。 メモ登録時のonUpdateメソッドのToastは表示されますが、データの登録が失敗しているみたいで、 再度アクティビティーを生成するときにメモデータを引き出すことができていません。 デバッグの結果、addMemoメソッドのtryまで変数がうまく入っています。 アプリが落ちたりもしません。 使っているAndroid Studioのバージョンは 3.6.1 grandleのbuildは3.6.3です。 import androidx.appcompat.app.AppCompatActivity; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.inputmethod.InputMethodManager; import android.widget.Button; import android.widget.EditText; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import java.util.Calendar; import datebase.CustomOpenHelper; public class MemoActivity extends AppCompatActivity implements View.OnClickListener{ //EditTextを生成 EditText editText; //データベース CustomOpenHelper customOpenHelper; //表示する日付 String display; //表示する年月日 int displayYear; int displayMonth; int displayDay; TextView textView; //Calendarクラス Calendar calendar = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_memo); //MainActivityからインテントを取得 Intent intent = this.getIntent(); //値を取得 String year = intent.getStringExtra("year"); //年 String month = intent.getStringExtra("month"); //月 String day = intent.getStringExtra("day"); //表示する文字列を作成 display = year+"年"+month+"月"+day+"日"; //文字列を登録 displayYear = Integer.parseInt(year); displayMonth = Integer.parseInt(month); displayDay = Integer.parseInt(day); //CalendarMakerの生成 this.calendar = Calendar.getInstance(); calendar.set(displayYear,displayMonth,displayDay); //画面に表示 textView = ((TextView)findViewById(R.id.year_month_day)); textView.setText(display); //EditTextを生成 editText = findViewById(R.id.memo); //Focusの設定 editText.setOnFocusChangeListener(new View.OnFocusChangeListener(){ @Override public void onFocusChange(View v, boolean hasFocus) { //EditTextのフォーカスが外れた場合 if(!hasFocus){ //ソフトキーボードを非表示にする InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); } } }); LinearLayout linearLayout = ((LinearLayout)findViewById(R.id.layout)); linearLayout.setOnClickListener(this); //データベースを生成する this.customOpenHelper = new CustomOpenHelper(this); //EditTextに文字列をセットする String memo = customOpenHelper.getPlan(display); editText.setText(memo); } //EditTextに入力された文字列を取得する public void onUpdate(View v){ //EditTextのテキストを取得 String text = editText.getText().toString(); //メモに入力がなかった場合 if(text.equals("")){ ImageView imageView = new ImageView(this); imageView.setImageResource(R.drawable.no); Toast toast = new Toast(this); toast.setDuration(Toast.LENGTH_SHORT); toast.setView(imageView); toast.setGravity(Gravity.CENTER,0,0); toast.show(); }else{//メモに入力があった場合 //データベースに登録する this.customOpenHelper.addMemo(display,text); Toast toast = new Toast(this); toast.makeText(this,"登録しました",Toast.LENGTH_SHORT).show(); } } //日付を前にずらす public void onPrevious(View v){ this.calendar.add(Calendar.DAY_OF_MONTH,-1); this.getDate(); String date = displayYear+"年"+displayMonth+"月"+displayDay+"日"; textView.setText(date); } //日付を後ろにずらす public void onNext(View v){ this.calendar.add(Calendar.DAY_OF_MONTH,1); this.getDate(); String date = displayYear+"年"+displayMonth+"月"+displayDay+"日"; textView.setText(date); } //戻るボタン"" public void onDelete(View v){ //アクティビティーの破棄 finish(); } @Override public void onClick(View v) { //ボタンにフォーカスを移動させる Button button = ((Button)findViewById(R.id.update)); button.setFocusable(true); button.setFocusableInTouchMode(true); button.requestFocus(); } //年月日の取得 private void getDate(){ this.displayYear = calendar.get(Calendar.YEAR); this.displayMonth = calendar.get(Calendar.MONTH); this.displayDay = calendar.get(Calendar.DATE); } }
m.ts10806

2020/04/27 08:26

質問は編集できますし、コメント欄ではマークダウン使えませんので、 原則質問本文を編集して加筆修正してください
退会済みユーザー

退会済みユーザー

2020/04/28 10:46

getなのにsetしてるが、設計は大丈夫か?
guest

回答2

0

ベストアンサー

メモの状態(空だったり空白のみだったり)とデータベースの状態をどう整合性を取るかがまだ不十分ですが, 単体で動作します.

java

1package com.teratail.q256872; 2 3import androidx.appcompat.app.AppCompatActivity; 4 5import android.content.*; 6import android.os.Bundle; 7import android.text.*; 8import android.view.*; 9import android.view.inputmethod.InputMethodManager; 10import android.widget.*; 11 12import java.text.SimpleDateFormat; 13import java.util.Calendar; 14 15public class MemoActivity extends AppCompatActivity { 16 private Calendar calendar; 17 private TextView textView; 18 private Button delete; 19 private String before; 20 private EditText editText; 21 private CustomOpenHelper customOpenHelper; 22 23 @Override 24 protected void onCreate(Bundle savedInstanceState) { 25 super.onCreate(savedInstanceState); 26 setContentView(R.layout.activity_memo); 27 28 //データベースを生成する 29 customOpenHelper = new CustomOpenHelper(this); 30 31 calendar = getCalendar(getIntent()); 32 textView = findViewById(R.id.year_month_day); 33 final Button update = findViewById(R.id.update); 34 delete = findViewById(R.id.delete); 35 36 editText = findViewById(R.id.memo); 37 editText.setOnFocusChangeListener(new View.OnFocusChangeListener(){ 38 @Override 39 public void onFocusChange(View v, boolean hasFocus) { 40 //EditTextのフォーカスが外れた場合 41 if(!hasFocus){ 42 //ソフトキーボードを非表示にする 43 InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 44 imm.hideSoftInputFromWindow(v.getWindowToken(),InputMethodManager.HIDE_NOT_ALWAYS); 45 } 46 } 47 }); 48 editText.addTextChangedListener(new TextWatcher() { 49 @Override 50 public void beforeTextChanged(CharSequence s, int start, int count, int after) {} 51 @Override 52 public void onTextChanged(CharSequence s, int start, int before, int count) {} 53 @Override 54 public void afterTextChanged(Editable s) { update.setEnabled(!s.toString().equals(before)); } 55 }); 56 57 //画面を表示 58 showCurrent(); 59 } 60 private Calendar getCalendar(Intent intent) { 61 calendar = Calendar.getInstance(); 62 if(intent != null && intent.hasExtra("year") && intent.hasExtra("month") && intent.hasExtra("day")) { 63 //値を取得 64 int year = Integer.parseInt(intent.getStringExtra("year")); 65 int month = Integer.parseInt(intent.getStringExtra("month")); 66 int day = Integer.parseInt(intent.getStringExtra("day")); 67 calendar.set(year, month, day); 68 } 69 return calendar; 70 } 71 72 public void onUpdate(View v){ 73 //EditTextのテキストを取得 74 String text = editText.getText().toString(); 75 //メモに入力がなかった場合 76 if(text.equals("")){ 77 ImageView imageView = new ImageView(this); 78 imageView.setImageResource(R.drawable.no); 79 Toast toast = new Toast(this); 80 toast.setDuration(Toast.LENGTH_SHORT); 81 toast.setView(imageView); 82 toast.setGravity(Gravity.CENTER,0,0); 83 toast.show(); 84 }else{//メモに入力があった場合 85 //データベースに登録する 86 customOpenHelper.addMemo(getKey(), text); 87 Toast.makeText(this,"登録しました",Toast.LENGTH_SHORT).show(); 88 showCurrent(); 89 } 90 } 91 //日付を前にずらす 92 public void onPrevious(View v){ 93 calendar.add(Calendar.DAY_OF_MONTH,-1); 94 //画面を表示 95 showCurrent(); 96 } 97 //日付を後ろにずらす 98 public void onNext(View v){ 99 calendar.add(Calendar.DAY_OF_MONTH,1); 100 //画面を表示 101 showCurrent(); 102 } 103 //メモを削除 104 public void onDelete(View v){ 105 customOpenHelper.deleteMemo(getKey()); 106 //画面を表示 107 showCurrent(); 108 //アクティビティーの破棄 109 //finish(); 110 } 111 //対象の表示 112 private void showCurrent(){ 113 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); 114 textView.setText(sdf.format(calendar.getTime())); 115 116 String memo = customOpenHelper.getMemo(getKey()); 117 delete.setEnabled(memo != null); 118 if(memo == null) memo = ""; 119 before = memo; 120 editText.setText(memo); 121 } 122 private String getKey() { 123 return textView.getText().toString(); 124 } 125}

java

1package com.teratail.q256872; 2 3import android.content.ContentValues; 4import android.content.Context; 5import android.database.*; 6import android.database.sqlite.SQLiteDatabase; 7import android.database.sqlite.SQLiteOpenHelper; 8 9public class CustomOpenHelper extends SQLiteOpenHelper { 10 //データベースの名前 11 private static final String DB_NAME ="calendar"; 12 //バージョン管理 13 private static final int DB_VERSION = 1; 14 //テーブル作成SQL 15 private static final String CREATE_TABLE_MESSAGES =""+ 16 "CREATE TABLE calendar("+ 17 "date TEXT PRIMARY KEY,"+ 18 "memo TEXT"+ 19 ")"; 20 21 public CustomOpenHelper(Context context){ 22 super(context,DB_NAME,null,DB_VERSION); 23 } 24 25 @Override 26 public void onCreate(SQLiteDatabase db) { 27 //テーブル作成 28 db.execSQL(CREATE_TABLE_MESSAGES); 29 } 30 31 @Override 32 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { 33 } 34 35 //メモを保存する 36 public void addMemo(String date, String memo) throws SQLException { 37 ContentValues val = new ContentValues(); 38 val.put("date",date); 39 val.put("memo",memo); 40 try (SQLiteDatabase db = getWritableDatabase();) { 41 db.replaceOrThrow(DB_NAME, null, val); 42 } 43 } 44 //メモを返す 45 String getMemo(String date){ 46 try (SQLiteDatabase db = getReadableDatabase(); 47 Cursor cursor = db.query( 48 DB_NAME, new String[]{"memo"}, 49 "date == ?", new String[]{date}, 50 null,null,null,null 51 );) { 52 if(cursor.moveToFirst()){ 53 return cursor.getString(0); 54 } 55 } 56 return null; 57 } 58 //メモを削除する 59 public void deleteMemo(String date) throws SQLException { 60 try (SQLiteDatabase db = getWritableDatabase();) { 61 db.delete(DB_NAME, "date == ?", new String[]{date}); 62 } 63 } 64}

layout/activity_memo.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" 3 xmlns:app="http://schemas.android.com/apk/res-auto" 4 xmlns:tools="http://schemas.android.com/tools" 5 android:layout_width="match_parent" 6 android:layout_height="match_parent" 7 tools:context=".MemoActivity"> 8 <TextView 9 android:id="@+id/year_month_day" 10 android:layout_width="match_parent" 11 android:layout_height="wrap_content" 12 android:text="9999年99月99日" 13 android:textSize="32dp" 14 android:gravity="center" 15 app:layout_constraintLeft_toLeftOf="parent" 16 app:layout_constraintRight_toRightOf="parent" 17 app:layout_constraintTop_toTopOf="parent" /> 18 <EditText 19 android:id="@+id/memo" 20 android:layout_width="match_parent" 21 android:layout_height="0dp" 22 android:hint="メモを入力" 23 android:layout_margin="2dp" 24 android:padding="5dp" 25 android:background="@drawable/memo_background" 26 android:inputType="textMultiLine" 27 android:gravity="top|left" 28 app:layout_constraintBottom_toTopOf="@id/layout" 29 app:layout_constraintLeft_toLeftOf="parent" 30 app:layout_constraintRight_toRightOf="parent" 31 app:layout_constraintTop_toBottomOf="@id/year_month_day" /> 32 <LinearLayout 33 android:id="@+id/layout" 34 android:layout_width="match_parent" 35 android:layout_height="wrap_content" 36 android:orientation="horizontal" 37 android:gravity="center" 38 app:layout_constraintBottom_toBottomOf="parent" 39 app:layout_constraintLeft_toLeftOf="parent" 40 app:layout_constraintRight_toRightOf="parent"> 41 <Button 42 android:id="@+id/previous" 43 android:layout_width="wrap_content" 44 android:layout_height="wrap_content" 45 android:text="" 46 android:onClick="onPrevious" /> 47 <Button 48 android:id="@+id/update" 49 android:layout_width="wrap_content" 50 android:layout_height="wrap_content" 51 android:text="Update" 52 android:onClick="onUpdate" /> 53 <Button 54 android:id="@+id/delete" 55 android:layout_width="wrap_content" 56 android:layout_height="wrap_content" 57 android:text="Delete" 58 android:onClick="onDelete" /> 59 <Button 60 android:id="@+id/next" 61 android:layout_width="wrap_content" 62 android:layout_height="wrap_content" 63 android:text="" 64 android:onClick="onNext" /> 65 </LinearLayout> 66</androidx.constraintlayout.widget.ConstraintLayout>

drawable/memo_background.xml

xml

1<?xml version="1.0" encoding="utf-8"?> 2<shape xmlns:android="http://schemas.android.com/apk/res/android"> 3 <stroke android:width="2dp" 4 android:color="#232323" /> 5 <corners android:radius="5dp" /> 6</shape>

投稿2020/04/30 16:39

jimbe

総合スコア12648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shibou

2020/05/01 02:02

うまく動かすことができました!ありがとうございました。
guest

0

データが登録されていないのではなく、取り出し方に誤りがあるのではないでしょうか。

CustomOpenHelperクラスのgetMemo()メソッドが

java

1 Cursor cursor = db.query( 2 this.DB_NAME, 3 new String[]{"memo"}, 4 "date == ?", 5 new String[]{"memo"}, 6 null,null,null,null 7 );

のようになっていますが、これだとdateというカラムの内容が"memo"となっているレコードを探すことになってしまい、一致するのが無いと判断されているのではありませんか?

メソッドの引数dateと一致するレコードを探すのならば、

java

1 Cursor cursor = db.query( 2 this.DB_NAME, 3 new String[]{"memo"}, 4 "date = ?", 5 new String[]{date}, 6 null,null,null,null 7 );

とするのかなと思えます。

投稿2020/04/27 12:18

編集2020/04/27 12:19
keicha_hrs

総合スコア6768

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Shibou

2020/04/28 04:34

試してみたのですが動作に変化はなく、データの登録はうまくいきませんでした...。一度ゼロから作り直してみようと思います。ありがとうございました。
keicha_hrs

2020/04/28 08:43

データベースに正常に情報が入っているのか、Android StudioのDevice Explorerを使ってDBファイルをPCにダウンロードし、PC上でSQLiteのDBファイルが閲覧できるソフト(DB Browser for SQLiteなど)を使って確認してみてはどうでしょうか。DBファイルの中身が見えない状態では、どこまでうまくいっているのか判別するのは困難でしょう。 この辺り参考になると思います。 https://www.virment.com/view-sqlite-database-by-android-studio/
Shibou

2020/04/30 00:36

DB Browser for SQLiteをダウンロードしてみましたが、データを登録するところから失敗しているみたいです...。このソフトのことを知らなかったので、とても勉強になりました。また機会があればアドバイスいただければ幸いです。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問