見出し画像

【アプリ作成】データの入力からデータの表示までの基本的な流れ

今回は、エディットテキストから文字を受け取り、その文字をテーブルへ追加。また、追加したものを呼び出すというような良く使うコードを共有いたします。


データベースの作成(sqlite)

DbClass.java

public class DbClass extends SQLiteOpenHelper {

   //データベースのバージョン
   private static final int DATABASE_VERSION = 1;


   //データベース、テーブル、カラムの設定
   private static final String DATABASE_NAME = "TESTDB.db";
   private static final String TABLE_NAME = "testdb";
   private static final String _ID = "id";
   private static final String COLUMN_NAME_FRUITS = "fruits";
   private static final String COLUMN_NAME_COUNT = "count";
   private static final String SQL_CREATE_ENTRIES =
           "CREATE TABLE " + TABLE_NAME +"(" +
                   _ID + " INTEGER PRIMARY KEY," +
                   COLUMN_NAME_FRUITS + " TEXT," +
                   COLUMN_NAME_COUNT + " TEXT)";
   private static final String SQL_DELETE_ENTRIES =
           "DROP TABLE IF EXISTS " + TABLE_NAME;



   //コンストラクタの設定
   DbClass(Context context) {
       super(context, DATABASE_NAME, null, DATABASE_VERSION);
   }



   public void onCreate(SQLiteDatabase db) {
       db.execSQL(
               SQL_CREATE_ENTRIES
       );
   }



   public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){
       db.execSQL(
               SQL_DELETE_ENTRIES
       );
       onCreate(db);
   }


   public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion){
       onUpgrade(db, oldVersion, newVersion);
   }
   
}

データベース(sqlite)用のクラスを作成します。今回はDbClassという名前、テーブル名はtestdb、カラムは2つ。

各種デザインの作成

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   xmlns:tools="http://schemas.android.com/tools"
   android:layout_width="match_parent"
   android:layout_height="match_parent"
   tools:context=".MainActivity">
   <Button
       android:id="@+id/button"
       style="@android:style/Widget.Holo.Light.Spinner"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintHorizontal_bias="0.498"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintVertical_bias="0.59" />
   <EditText
       android:id="@+id/edit_text"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:hint="エディットテキスト"
       android:textSize="30dp"
       app:layout_constraintBottom_toTopOf="@+id/edit_text2"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintHorizontal_bias="0.436"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintVertical_bias="0.256" />

   <EditText
       android:id="@+id/edit_text2"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:hint="エディットテキスト2"
       android:textSize="30dp"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintVertical_bias="0.158" />
   <Button
       android:id="@+id/button_insert"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"
       android:onClick="insert"
       android:text="追加"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintHorizontal_bias="0.498"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintVertical_bias="0.311" />
   <Button
   android:id="@+id/button_read"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:layout_centerHorizontal="true"
   android:layout_centerVertical="true"
   android:onClick="read"
   android:text="読み込み"
   app:layout_constraintBottom_toBottomOf="parent"
   app:layout_constraintEnd_toEndOf="parent"
   app:layout_constraintHorizontal_bias="0.498"
   app:layout_constraintStart_toStartOf="parent"
   app:layout_constraintTop_toTopOf="parent"
   app:layout_constraintVertical_bias="0.396" />

   <Button
       android:id="@+id/button_delete"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_centerHorizontal="true"
       android:layout_centerVertical="true"
       android:onClick="delete"
       android:text="削除"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintEnd_toEndOf="parent"
       app:layout_constraintHorizontal_bias="0.498"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintVertical_bias="0.465" />
   <TextView
       android:id="@+id/text_view"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="ここにDBの内容を表示"
       app:layout_constraintBottom_toBottomOf="parent"
       app:layout_constraintStart_toStartOf="parent"
       app:layout_constraintTop_toTopOf="parent"
       app:layout_constraintVertical_bias="0.672" />
</androidx.constraintlayout.widget.ConstraintLayout>

キャプチャ


今回は、文字を受け取るためのエディットテキスト2つ、押したら、テーブルに追加するボタン、読み込むボタン、削除するボタン、読み込んだあと、テキストに表示するテキストビューを使うので、適当にボタンを3つとテキストビュー1つを作成します。


テーブルへ追加

MainActivity.java

    //データベース追加するボタン
   public void insert(View view) {
       if (helper == null) {
           helper = new DbClass(getApplicationContext());
       }
       if (db == null) {
           db = helper.getReadableDatabase();
       }
       editText = (EditText) findViewById(R.id.edit_text);
       String edittext = editText.getText().toString();
       editText2 = (EditText) findViewById(R.id.edit_text2);
       String edittext2 = editText2.getText().toString();
       insertData(db, edittext, edittext2);
   }

   //データベースへ挿入するメソッド
   public void insertData(SQLiteDatabase db,
                          String fruits,
                          String count) {
       ContentValues values = new ContentValues();
       values.put("fruits", fruits);
       values.put("count", count);
       db.insert("testdb", null, values);
   }


テーブルの表示

MainActivity.java

 //データベースを読み込むメソッド
   public void read(View view) {
       if (helper == null) {
           helper = new DbClass(getApplicationContext());
       }
       if (db == null) {
           db = helper.getReadableDatabase();
       }
       Cursor cursor = db.query(
               "testdb",
               null,
               null,
               null,
               null,
               null,
               null
       );
       cursor.moveToFirst();
       StringBuilder sbuilder = new StringBuilder();
       for (int i = 0; i < cursor.getCount(); i++) {
           sbuilder.append(cursor.getString(0));
           sbuilder.append(":");
           sbuilder.append(cursor.getString(1));
           sbuilder.append("/\n");
           cursor.moveToNext();
       }
       cursor.close();


テーブルの削除

MainActivity.java

    public void delete(View view){
       db.delete("testdb", null, null);
   }

MainActivity.java全文

import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
   //宣言
   private EditText editText, editText2;
   private DbClass helper;
   private SQLiteDatabase db;
   private TextView textView;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
   }

   //データベース追加するボタン
   public void insert(View view) {
       if (helper == null) {
           helper = new DbClass(getApplicationContext());
       }
       if (db == null) {
           db = helper.getReadableDatabase();
       }
       editText = (EditText) findViewById(R.id.edit_text);
       String edittext = editText.getText().toString();
       editText2 = (EditText) findViewById(R.id.edit_text2);
       String edittext2 = editText2.getText().toString();
       insertData(db, edittext, edittext2);
   }

   //データベースへ挿入するメソッド
   public void insertData(SQLiteDatabase db,
                          String fruits,
                          String count) {
       ContentValues values = new ContentValues();
       values.put("fruits", fruits);
       values.put("count", count);
       db.insert("testdb", null, values);
   }

   //データベースを読み込むメソッド
   public void read(View view) {
       if (helper == null) {
           helper = new DbClass(getApplicationContext());
       }
       if (db == null) {
           db = helper.getReadableDatabase();
       }
       Cursor cursor = db.query(
               "testdb",
               null,
               null,
               null,
               null,
               null,
               null
       );
       cursor.moveToFirst();
       StringBuilder sbuilder = new StringBuilder();
       for (int i = 0; i < cursor.getCount(); i++) {
           sbuilder.append(cursor.getString(0));
           sbuilder.append(":");
           sbuilder.append(cursor.getString(1));
           sbuilder.append("/\n");
           cursor.moveToNext();
       }
       cursor.close();
       textView = (TextView)findViewById(R.id.text_view);
       textView.setText(sbuilder);
   }
   public void delete(View view){
       db.delete("testdb", null, null);
   }
}

今回の記事は以上となります。

また、過去にこのようなコードを使用して、色々アプリを作成しているのでぜひ、そちらもご参照いただければ幸いです。



この記事が気に入ったらサポートをしてみませんか?