【アプリ作成】データの入力からデータの表示までの基本的な流れ
今回は、エディットテキストから文字を受け取り、その文字をテーブルへ追加。また、追加したものを呼び出すというような良く使うコードを共有いたします。
データベースの作成(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);
}
}
今回の記事は以上となります。
また、過去にこのようなコードを使用して、色々アプリを作成しているのでぜひ、そちらもご参照いただければ幸いです。
この記事が気に入ったらサポートをしてみませんか?