# AN25 課題No.07(optionは追加で10,000円です) ###### tags: `課題` activity_main.xml ```xml= <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="30dip" android:gravity="left"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="キー"/> <EditText android:id="@+id/EditKey" android:layout_width="400dp" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="本文" /> <EditText android:id="@+id/EditText01" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.93" android:gravity="top"/> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" > <Button android:id="@+id/KeyRead" android:layout_width="90dp" android:layout_height="match_parent" android:onClick="functionKeyRead" android:text="読む" android:textSize="20sp" /> <Button android:id="@+id/KeWrite" android:layout_width="90dp" android:layout_height="match_parent" android:onClick="functionKeyWrite" android:text="保存" android:textSize="20sp" /> <Button android:id="@+id/KeyClear" android:layout_width="90dp" android:layout_height="match_parent" android:onClick="functionKeyClear" android:text="クリア" android:textSize="20sp" /> <Button android:id="@+id/KeyList" android:layout_width="90dp" android:layout_height="match_parent" android:onClick="functionKeyList" android:text="一覧" android:textSize="20sp" /> </TableRow> </TableLayout> </LinearLayout> ``` Activity_main.xml(option) ```xml= <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginBottom="30dip" android:gravity="left"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="キー"/> <EditText android:id="@+id/EditKey" android:layout_width="400dp" android:layout_height="wrap_content" /> </LinearLayout> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="本文" /> <EditText android:id="@+id/EditText01" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_weight="0.93" android:gravity="top"/> <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TableRow android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" > <Button android:id="@+id/KeyRead" android:layout_width="70dp" android:layout_height="match_parent" android:onClick="functionKeyRead" android:text="読む" android:textSize="20sp" /> <Button android:id="@+id/KeWrite" android:layout_width="70dp" android:layout_height="match_parent" android:onClick="functionKeyWrite" android:text="保存" android:textSize="20sp" /> <Button android:id="@+id/KeyClear" android:layout_width="70dp" android:layout_height="match_parent" android:onClick="functionKeyClear" android:text="クリア" android:textSize="20sp" /> <Button android:id="@+id/KeyList" android:layout_width="70dp" android:layout_height="match_parent" android:onClick="functionKeyList" android:text="一覧" android:textSize="20sp" /> <Button android:id="@+id/KeyDelete" android:layout_width="70dp" android:layout_height="match_parent" android:onClick="functionKeyDelete" android:text="削除" android:textSize="20sp" /> <Button android:id="@+id/KeyUpdate" android:layout_width="70dp" android:layout_height="match_parent" android:onClick="functionKeyUpdate" android:text="更新" android:textSize="20sp" /> </TableRow> </TableLayout> </LinearLayout> ``` MainActivity.java ```java= package nhs00650.hal.ac.mpad; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.HashMap; import android.view.View; import android.widget.EditText; import android.widget.Toast; import android.database.*; import android.database.sqlite.*; public class MainActivity extends AppCompatActivity { SQLiteDatabase db; EditText et; EditText ekey; int cert = 0; String ekeyStr = ""; String key = ""; String memo = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.EditText01); ekey = (EditText) findViewById(R.id.EditKey); //データベースの作成 String dbStr = "data/data/" + getPackageName() + "/nhs00650.db"; db = SQLiteDatabase.openOrCreateDatabase(dbStr, null); //テーブル作成用のクエリ文 String query_table1 = "DROP TABLE IF EXISTS mpad"; String query_table2 = "CREATE TABLE mpad (id INTEGER PRIMARY KEY AUTOINCREMENT," + "keyy TEXT, memo TEXT, write_date TEXT)"; //テーブルの作成 db.execSQL(query_table1); db.execSQL(query_table2); //レコードの追加 //今日の日付の取得 String write_dateStr = now_data(); String query_record_set[] = { "INSERT INTO mpad(keyy,memo,write_date) VALUES('test01','テスト01','" + write_dateStr + "')", "INSERT INTO mpad(keyy,memo,write_date) VALUES('test02','テスト02','" + write_dateStr + "')", "INSERT INTO mpad(keyy,memo,write_date) VALUES('test03','テスト03','" + write_dateStr + "')" }; for (int i = 0; i < query_record_set.length; i++) { db.execSQL(query_record_set[i]); } } private String now_data() { Date today = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(today); int yy = cal.get(Calendar.YEAR); int mm = cal.get(Calendar.MONTH) + 1; int dd = cal.get(Calendar.DATE); int hour = cal.get(Calendar.HOUR); int minute = cal.get(Calendar.MINUTE); int second = cal.get(Calendar.SECOND); String now_dateStr = yy + "/" + mm + "/" + dd + " " + hour + ":" + minute + ":" + second; return now_dateStr; } public void functionKeyWrite(View KeyWrite) { String write_dateStr = now_data(); String ekeyStr = ekey.getText().toString(); String etStr = et.getText().toString(); String query_insert = "INSERT INTO mpad(keyy,memo,write_date) VALUES('"+ekeyStr + "' , '" + etStr + "' , '" + write_dateStr + "')"; db.execSQL(query_insert); Toast myToast = Toast.makeText(this, etStr + "をキーに書き込みました", Toast.LENGTH_SHORT); myToast.show(); } //読むボタンを押した時のメソッド public void functionKeyRead(View KeyRead) { ekeyStr = ekey.getText().toString(); //DB検索 String query_select = "SELECT id, keyy, memo, write_date FROM mpad"; Cursor db_row = db.rawQuery(query_select, null); //レコードを取り出しながらフィールドデータを取得 String result_memo = "a"; while (db_row.moveToNext()) { int index_id = db_row.getColumnIndex("id"); int index_key = db_row.getColumnIndex("keyy"); int index_memo = db_row.getColumnIndex("memo"); key = db_row.getString(index_key); memo = db_row.getString(index_memo); //入力されたキーとDBから取得したキーを比較 if (key.equals(ekeyStr)) { result_memo = memo; } } if (result_memo.equals("a")) { cert = 0; et.setText(""); toastMethod(); } else { cert = 1; et.setText(result_memo); toastMethod(); } } public void toastMethod() { if (cert == 1) { Toast myToast = Toast.makeText(this, ekeyStr + "の内容を読み込みました", Toast.LENGTH_SHORT); myToast.show(); } else if (cert == 0) { Toast myToast = Toast.makeText(this, "指定されたキーはありません", Toast.LENGTH_SHORT); myToast.show(); } } public void functionKeyClear(View KeyClear) { et.setText(""); } public void functionKeyList(View KeyList) { //DB検索 String query_select = "SELECT id, keyy, memo, write_date FROM mpad"; Cursor db_row = db.rawQuery(query_select, null); //レコードを取り出しながらフィールドデータを取得 ArrayList<String> list = new ArrayList<>(); ArrayList<String> list2 = new ArrayList<>(); ArrayList<String> list3 = new ArrayList<>(); while (db_row.moveToNext()) { int index_id = db_row.getColumnIndex("id"); int index_key = db_row.getColumnIndex("keyy"); int index_memo = db_row.getColumnIndex("memo"); int index_write_date = db_row.getColumnIndex("write_date"); String id = db_row.getString(index_id); key = db_row.getString(index_key); memo = db_row.getString(index_memo); String write_date = db_row.getString(index_write_date); list.add(key + "\n"); list2.add(memo); list3.add(write_date + "\n"); } StringBuilder stb = new StringBuilder(); for(int i=0; i < list.size(); i++){ stb.append("key:" + list.get(i) + "本文:" + list2.get(i) + "  作成日:" + list3.get(i)); } et.setText(stb); Toast myToast = Toast.makeText(this, "全レコード読み込みました", Toast.LENGTH_SHORT); myToast.show(); } } ``` MainActivity.java(option) ```java= package nhs00650.hal.ac.mpad; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import java.util.ArrayList; import java.util.Calendar; import java.util.Date; import java.util.List; import java.util.HashMap; import android.view.View; import android.widget.EditText; import android.widget.Toast; import android.database.*; import android.database.sqlite.*; public class MainActivity extends AppCompatActivity { SQLiteDatabase db; EditText et; EditText ekey; int cert = 0; String ekeyStr = ""; String key = ""; String memo = ""; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); et = (EditText) findViewById(R.id.EditText01); ekey = (EditText) findViewById(R.id.EditKey); //データベースの作成 String dbStr = "data/data/" + getPackageName() + "/nhs00650.db"; db = SQLiteDatabase.openOrCreateDatabase(dbStr, null); //テーブル作成用のクエリ文 String query_table1 = "DROP TABLE IF EXISTS mpad"; String query_table2 = "CREATE TABLE mpad (id INTEGER PRIMARY KEY AUTOINCREMENT," + "keyy TEXT, memo TEXT, write_date TEXT)"; //テーブルの作成 db.execSQL(query_table1); db.execSQL(query_table2); //レコードの追加 //今日の日付の取得 String write_dateStr = now_data(); String query_record_set[] = { "INSERT INTO mpad(keyy,memo,write_date) VALUES('test01','テスト01','" + write_dateStr + "')", "INSERT INTO mpad(keyy,memo,write_date) VALUES('test02','テスト02','" + write_dateStr + "')", "INSERT INTO mpad(keyy,memo,write_date) VALUES('test03','テスト03','" + write_dateStr + "')" }; for (int i = 0; i < query_record_set.length; i++) { db.execSQL(query_record_set[i]); } } private String now_data() { Date today = new Date(); Calendar cal = Calendar.getInstance(); cal.setTime(today); int yy = cal.get(Calendar.YEAR); int mm = cal.get(Calendar.MONTH) + 1; int dd = cal.get(Calendar.DATE); int hour = cal.get(Calendar.HOUR); int minute = cal.get(Calendar.MINUTE); int second = cal.get(Calendar.SECOND); String now_dateStr = yy + "/" + mm + "/" + dd + " " + hour + ":" + minute + ":" + second; return now_dateStr; } public void functionKeyWrite(View KeyWrite) { String write_dateStr = now_data(); String ekeyStr = ekey.getText().toString(); String etStr = et.getText().toString(); String query_insert = "INSERT INTO mpad(keyy,memo,write_date) VALUES('"+ekeyStr + "' , '" + etStr + "' , '" + write_dateStr + "')"; db.execSQL(query_insert); Toast myToast = Toast.makeText(this, etStr + "をキーに書き込みました", Toast.LENGTH_SHORT); myToast.show(); } //読むボタンを押した時のメソッド public void functionKeyRead(View KeyRead) { ekeyStr = ekey.getText().toString(); //DB検索 String query_select = "SELECT id, keyy, memo, write_date FROM mpad"; Cursor db_row = db.rawQuery(query_select, null); //レコードを取り出しながらフィールドデータを取得 String result_memo = "a"; while (db_row.moveToNext()) { int index_id = db_row.getColumnIndex("id"); int index_key = db_row.getColumnIndex("keyy"); int index_memo = db_row.getColumnIndex("memo"); key = db_row.getString(index_key); memo = db_row.getString(index_memo); //入力されたキーとDBから取得したキーを比較 if (key.equals(ekeyStr)) { result_memo = memo; } } if (result_memo.equals("a")) { cert = 0; et.setText(""); toastMethod(); } else { cert = 1; et.setText(result_memo); toastMethod(); } } public void toastMethod() { if (cert == 1) { Toast myToast = Toast.makeText(this, ekeyStr + "の内容を読み込みました", Toast.LENGTH_SHORT); myToast.show(); } else if (cert == 0) { Toast myToast = Toast.makeText(this, "指定されたキーはありません", Toast.LENGTH_SHORT); myToast.show(); } } public void functionKeyClear(View KeyClear) { et.setText(""); } public void functionKeyList(View KeyList) { //DB検索 String query_select = "SELECT id, keyy, memo, write_date FROM mpad"; Cursor db_row = db.rawQuery(query_select, null); //レコードを取り出しながらフィールドデータを取得 ArrayList<String> list = new ArrayList<>(); ArrayList<String> list2 = new ArrayList<>(); ArrayList<String> list3 = new ArrayList<>(); while (db_row.moveToNext()) { int index_id = db_row.getColumnIndex("id"); int index_key = db_row.getColumnIndex("keyy"); int index_memo = db_row.getColumnIndex("memo"); int index_write_date = db_row.getColumnIndex("write_date"); String id = db_row.getString(index_id); key = db_row.getString(index_key); memo = db_row.getString(index_memo); String write_date = db_row.getString(index_write_date); list.add(key + "\n"); list2.add(memo); list3.add(write_date + "\n"); } StringBuilder stb = new StringBuilder(); for(int i=0; i < list.size(); i++){ stb.append("key:" + list.get(i) + "本文:" + list2.get(i) + "  作成日:" + list3.get(i)); } et.setText(stb); Toast myToast = Toast.makeText(this, "全レコード読み込みました", Toast.LENGTH_SHORT); myToast.show(); } public void functionKeyDelete(View KeyDelete) { int count = 0; ekeyStr = ekey.getText().toString(); String query_count = "SELECT * FROM mpad WHERE keyy = '" + ekeyStr + "'"; Cursor db_row = db.rawQuery(query_count, null); while (db_row.moveToNext()) { int index_key = db_row.getColumnIndex("keyy"); key = db_row.getString(index_key); if(key.equals(ekeyStr)){ count = 1; break; } else { count = 0; } } if(count == 1){ String query_record_delete = "DELETE FROM mpad WHERE keyy = '" + ekeyStr + "'"; db.execSQL(query_record_delete); Toast myToast = Toast.makeText(this, ekeyStr + "を削除しました", Toast.LENGTH_SHORT); myToast.show(); } else if(count == 0){ Toast myToast = Toast.makeText(this, "指定されたキーはありません", Toast.LENGTH_SHORT); myToast.show(); } } public void functionKeyUpdate(View KeyUpdate) { int count = 0; ekeyStr = ekey.getText().toString(); String etStr = et.getText().toString(); String query_count = "SELECT * FROM mpad WHERE keyy = '" + ekeyStr + "'"; Cursor db_row = db.rawQuery(query_count, null); while (db_row.moveToNext()) { int index_key = db_row.getColumnIndex("keyy"); key = db_row.getString(index_key); if(key.equals(ekeyStr)){ count = 1; break; } else { count = 0; } } if(count == 1){ String query_record_update = "UPDATE mpad SET memo = '" + etStr + "' WHERE keyy = '" + ekeyStr + "'"; db.execSQL(query_record_update); Toast myToast = Toast.makeText(this, ekeyStr + "を更新しました", Toast.LENGTH_SHORT); myToast.show(); } else if(count == 0){ Toast myToast = Toast.makeText(this, "指定されたキーはありません", Toast.LENGTH_SHORT); myToast.show(); } } } ``` ## 雑談 (0→やまぴ 1→みや 2→やすい 3→りょうくん 4→アミカ 5→やの 6→山田) --- <span style="color: #ff3333">aaa</span> <span style="text-decoration: underline">aaa</span>