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) {
}
}
次回は、データ削除ボタンや データ検索ボタンを追加する予定です。