ASデータベース編①解説~入力したテキストをSQLiteデータベースに登録し、一覧を表示する~

MainActivity.java

package com.example.databasedisease;

import androidx.appcompat.app.AppCompatActivity;

import android.content.ContentValues;
import android.content.Intent;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

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

EditText disease_text = findViewById(R.id.disease_text);
EditText classification_text = findViewById(R.id.classification_text);
EditText concept_text = findViewById(R.id.concept_text);
EditText sign_text = findViewById(R.id.sign_text);
EditText diagnosis_text = findViewById(R.id.diagnosis_text);
EditText therapy_text = findViewById(R.id.therapy_text);

//データベースに関する記述

MyOpenHelper helper = new MyOpenHelper(this);
SQLiteDatabase db = helper.getWritableDatabase();

//入力したデータの処理
Button register_btn = findViewById(R.id.register_btn);
register_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String disease = disease_text.getText().toString();
String classification = classification_text.getText().toString();
String concept = concept_text.getText().toString();
String sign = sign_text.getText().toString();
String diagnosis = diagnosis_text.getText().toString();
String therapy = therapy_text.getText().toString();

ContentValues contentvalues = new ContentValues();
contentvalues.put("disease",disease);
contentvalues.put("classification",classification);
contentvalues.put("concept",concept);
contentvalues.put("sign",sign);
contentvalues.put("diagnosis",diagnosis);
contentvalues.put("therapy",therapy);


long id =db.insert("disease_data",disease,contentvalues);
}
});

Button clear_btn = findViewById(R.id.clear_btn);
clear_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
disease_text.setText("");
classification_text.setText("");
concept_text.setText("");
sign_text.setText("");
diagnosis_text.setText("");
therapy_text.setText("");
}
});



Button configure_btn = findViewById(R.id.configure_btn);
configure_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
startActivity(intent);
}
});
}
}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="疾患名:"/>

<EditText
android:id="@+id/disease_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="分類:"/>

<EditText
android:id="@+id/classification_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="概念:"/>

<EditText
android:id="@+id/concept_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="症状:"/>

<EditText
android:id="@+id/sign_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="診断:"/>

<EditText
android:id="@+id/diagnosis_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="治療:"/>

<EditText
android:id="@+id/therapy_text"
android:layout_width="match_parent"
android:layout_height="wrap_content"/>

<Button
android:id="@+id/register_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="登録" />

<Button
android:id="@+id/clear_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="クリア"
android:layout_marginTop="10dp"/>

<Button
android:id="@+id/configure_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="一覧表示"
android:layout_marginTop="10dp"/>

</LinearLayout>

SecondActivity.java

package com.example.databasedisease;

import androidx.appcompat.app.AppCompatActivity;

import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;

public class SecondActivity extends AppCompatActivity {

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

LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
setContentView(layout);

MyOpenHelper helper = new MyOpenHelper(this);
SQLiteDatabase db = helper.getReadableDatabase();

Cursor c = db.query("disease_data",new String[]{"disease","classification","concept","sign","diagnosis","therapy"},null,null,null,null,null);

boolean mov = c.moveToFirst();
while(mov){
TextView textView1 = new TextView(this);
TextView textView2 = new TextView(this);
TextView textView3 = new TextView(this);
TextView textView4 = new TextView(this);
TextView textView5 = new TextView(this);
TextView textView6 = new TextView(this);

textView1.setText("疾患名:"+c.getString(0));
textView1.setTextSize(25);
textView1.setTextColor(Color.parseColor("#FF66FF"));
textView2.setText("分類:"+c.getString(1));
textView2.setTextSize(20);
textView3.setText("概念:"+c.getString(2));
textView3.setTextSize(20);
textView4.setText("症状:"+c.getString(3));
textView4.setTextSize(20);
textView5.setText("診断:"+c.getString(4));
textView5.setTextSize(20);
textView6.setText("治療:"+c.getString(5));
textView6.setTextSize(20);
mov = c.moveToNext();
layout.addView(textView1);
layout.addView(textView2);
layout.addView(textView3);
layout.addView(textView4);
layout.addView(textView5);
layout.addView(textView6);

}
c.close();
db.close();

Button back_btn = new Button(this);
back_btn.setText("Back");
layout.addView(back_btn);

back_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
startActivity(new Intent(SecondActivity.this,MainActivity.class));
}
});
}
}

activity_second.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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=".SecondActivity">

</LinearLayout>

MyOpenHelper.java(SQLiteOpenHelperを継承したクラス)

package com.example.databasedisease;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class MyOpenHelper extends SQLiteOpenHelper {
public MyOpenHelper(Context context) {
super(context, "disease_db", null, 1);
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
/*
create table disease_data(
id int auto_increment primary key not null,
name varchar(25) not null,
age int not null)
*/

sqLiteDatabase.execSQL("create table disease_data("
+"disease text not null primary key,"
+"classification text not null,"
+"concept text not null,"
+"sign text not null,"
+"diagnosis text not null,"
+"therapy text not null"
+")");
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {

}
}

次回は、データ削除ボタンや データ検索ボタンを追加する予定です。