타닥타닥 개발자의 일상

kotlin 코틀린으로 회원 등록, 수정,추가, 삭제하는 안드로이드 프로그램 만들기 / sqlite로 화면전환시 데이터 전달 / sqllite+singleton 사용하기 본문

코딩 기록/Kotlin

kotlin 코틀린으로 회원 등록, 수정,추가, 삭제하는 안드로이드 프로그램 만들기 / sqlite로 화면전환시 데이터 전달 / sqllite+singleton 사용하기

NomadHaven 2022. 2. 12. 12:18

대략 이런느낌의 파일 만들예정

 

 

폴더 및 파일 구성

 

Member : Dto 역할을 하는 클래스

DBHelper : Dao 역할과 Singleton을 사용하는 클래스

 

나머지 Activity들 : 프로그램 사용시 필요한 모든 화면에 대한 Activity

새로만들기 > Activity > EmptyActivity로  각각의 Activity 생성.

 

Member.kt (Dto 역할)
package com.example.membermanagement
class Member(var seq:Int, var name:String, var age:Int, var address:String)

 

DBHelper.kt (Dao 역할과 Singleton을 사용하는 클래스)
package com.example.membermanagement

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

//Dao ==

class DBHelper(context:Context,filename:String):SQLiteOpenHelper(context,filename,null,1) {

    // Singleton
    companion object {
        var dbhelper: DBHelper? = null
        fun getInstance(context: Context, filename: String): DBHelper {
            if (dbhelper == null) {
                dbhelper = DBHelper(context, filename)
            }
            return dbhelper!!
        }

    }


    override fun onCreate(db: SQLiteDatabase?) {
        var sql: String = "CREATE TABLE IF NOT EXISTS MEMBER( " +
                "SEQ INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "NAME STRING, " +
                "AGE INTEGER, " +
                "ADDRESS STRING ) "

        db?.execSQL(sql)
    }

    override fun onUpgrade(db: SQLiteDatabase?, p1: Int, p2: Int) {


    }

    fun insert(vo: Member) {
        var sql = " INSERT INTO MEMBER(name,age,address) " +
                " VALUES('${vo.name}',${vo.age},'${vo.address}')"

        var db = this.writableDatabase
        db.execSQL(sql)

    }

    fun delete(name: String) {
        var sql = " DELETE FROM MEMBER WHERE NAME = " +
                "  '${name}' "

        var db = this.writableDatabase
        db.execSQL(sql)

    }

    fun search(name: String): String {
        var sql = " SELECT SEQ, NAME, AGE, ADDRESS FROM MEMBER WHERE NAME LIKE" +
                "'${name}'"

        var db = this.writableDatabase
        var result = db.rawQuery(sql, null)

        var str: String? = ""

        while (result.moveToNext()) {
            str += " 번호: " + result.getString(result.getColumnIndex("SEQ")) + " \n " +
                    "이름: " + result.getString(result.getColumnIndex("NAME")) + " \n " +
                    "나이: " + result.getString(result.getColumnIndex("AGE")) + " \n " +
                    "거주지: " + result.getString(result.getColumnIndex("ADDRESS"))
        }

        if(str == ""){
            println("검색된 데이터가 없습니다.")
        }

        return str!!

    }

    fun revise(name: String, age: Int, address: String) {
        var sql = " UPDATE MEMBER SET AGE = '${age}' WHERE NAME ='${name}';"

        var db = this.writableDatabase
        db.execSQL(sql)

        var sql2 = " UPDATE MEMBER SET ADDRESS = '${address}' WHERE NAME ='${name}';"

        var db2 = this.writableDatabase
        db2.execSQL(sql2)

    }

    fun allMember(): String {
        var sql = " SELECT * FROM MEMBER"


        var db = this.writableDatabase
        var result = db.rawQuery(sql, null)

        var str: String? = ""

        while (result.moveToNext()) {
            str +=  "_______________________" +" \n " +" \n " +
                    " 번호: " + result.getString(result.getColumnIndex("SEQ")) + " \n " +
                    "이름: " + result.getString(result.getColumnIndex("NAME")) + " \n " +
                    "나이: " + result.getString(result.getColumnIndex("AGE")) + " \n " +
                    "거주지: " + result.getString(result.getColumnIndex("ADDRESS")) + " \n "
        }


        return str!!
    }


}

 

 


activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".MainActivity">
    <TextView
            android:id="@+id/textView"
            android:layout_width="145dp"
            android:layout_height="49dp"
            android:text="회원관리"
            android:textSize="30dp"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintLeft_toLeftOf="parent"
            app:layout_constraintRight_toRightOf="parent"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintVertical_bias="0.057"
            app:layout_constraintHorizontal_bias="0.537"/>
    <Button
            android:id="@+id/addBtn"
            android:text="회원추가"
            android:layout_width="98dp"
            android:layout_height="61dp"
            app:layout_constraintTop_toBottomOf="@+id/textView"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.504"
            app:layout_constraintVertical_bias="0.271"/>
    <Button
            android:id="@+id/delBtn"
            android:text="회원삭제"
            android:layout_width="98dp"
            android:layout_height="61dp"
            app:layout_constraintTop_toBottomOf="@+id/addBtn"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.504"
            app:layout_constraintVertical_bias="0.09"/>
    <Button
            android:id="@+id/searchBtn"
            android:text="회원검색"
            android:layout_width="98dp"
            android:layout_height="61dp"
            app:layout_constraintTop_toBottomOf="@+id/addBtn"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.504"
            app:layout_constraintVertical_bias="0.323"/>
    <Button
            android:id="@+id/modBtn"
            android:text="회원수정"
            android:layout_width="98dp"
            android:layout_height="61dp"
            app:layout_constraintTop_toBottomOf="@+id/addBtn"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.504"
            app:layout_constraintVertical_bias="0.546"/>
    <Button
            android:id="@+id/printBtn"
            android:text="전체 회원조회"
            android:layout_width="98dp"
            android:layout_height="61dp"
            app:layout_constraintTop_toBottomOf="@+id/addBtn"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.504"
            app:layout_constraintVertical_bias="0.801"/>

</androidx.constraintlayout.widget.ConstraintLayout>

 

MainActivity.kt
package com.example.membermanagement

import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val addBtn = findViewById<Button>(R.id.addBtn)

        val delBtn = findViewById<Button>(R.id.delBtn)

        val searchBtn = findViewById<Button>(R.id.searchBtn)

        val modBtn = findViewById<Button>(R.id.modBtn)

        val printBtn = findViewById<Button>(R.id.printBtn)

        addBtn.setOnClickListener {
            val intent = Intent(this, RegisterActivity::class.java)
            startActivity(intent)
        }

        delBtn.setOnClickListener {
            val intent = Intent(this, DeleteActivity::class.java)
            startActivity(intent)
        }

        searchBtn.setOnClickListener {
            val intent = Intent(this, SearchActivity::class.java)
            startActivity(intent)
        }

        modBtn.setOnClickListener {
            val intent = Intent(this, ReviseActivity::class.java)
            startActivity(intent)
        }

        printBtn.setOnClickListener {
            val intent = Intent(this, AllmemberActivity::class.java)
            startActivity(intent)

        }





    }
}

 


회원 추가 가능을 하는 RegisterActivity

 

activity_register.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SearchActivity">

    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editTextname"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintVertical_bias="0.155"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.597"/>
    <TextView
            android:id="@+id/modnameTxt"
            android:text="이름"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.168"
            app:layout_constraintVertical_bias="0.176"/>
    <EditText
            android:id="@+id/editTxtaddress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintVertical_bias="0.389"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.592"/>
    <TextView
            android:id="@+id/ageTxt"
            android:text="나이"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.168"
            app:layout_constraintVertical_bias="0.107"
            app:layout_constraintTop_toBottomOf="@+id/modnameTxt"/>
    <TextView
            android:id="@+id/addressTxt"
            android:text="주소"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.168"
            app:layout_constraintVertical_bias="0.246"
            app:layout_constraintTop_toBottomOf="@+id/modnameTxt"/>
    <EditText
            android:id="@+id/editTextage"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintVertical_bias="0.272"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.597"/>
    <Button
            android:id="@+id/findBtn_mod"
            android:text="회원추가"
            android:layout_width="120dp"
            android:layout_height="73dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.498"
            app:layout_constraintVertical_bias="0.724"/>
</androidx.constraintlayout.widget.ConstraintLayout>

 

 

RegisterActivity.kt

DBHelper의 inster함수를 호출한다.

package com.example.membermanagement

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText


class RegisterActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_register)

        val registerBtn = findViewById<Button>(R.id.findBtn_mod)

        val editTextname = findViewById<EditText>(R.id.editTextname)
        val editTextage = findViewById<EditText>(R.id.editTextage)
        val editTxtaddress = findViewById<EditText>(R.id.editTxtaddress)


        registerBtn.setOnClickListener {
            //seq는 어차피 DB에서 추가
            val mem = Member(0,
                                  editTextname.text.toString().trim(),
                                  editTextage.text.toString().toInt(),
                                  editTxtaddress.text.toString().trim())

            val dbHelper = DBHelper.getInstance(this,"member.db",)//.insert(mem)해도 됨
            dbHelper.insert(mem)



        }





    }
}

 


DB를 삭제하는 DeleteActivity

activity_delete.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SearchActivity">

    <TextView
            android:id="@+id/modnameTxt"
            android:text="검색할 이름"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.099"
            app:layout_constraintVertical_bias="0.175"/>
    <Button
            android:id="@+id/findBtn_mod"
            android:text="회원검색"
            android:layout_width="120dp"
            android:layout_height="73dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.216"
            app:layout_constraintVertical_bias="0.726"/>
    <Button
            android:id="@+id/mod_Btn"
            android:text="회원삭제"
            android:layout_width="120dp"
            android:layout_height="73dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.783"
            app:layout_constraintVertical_bias="0.726"/>
    <TextView
            android:id="@+id/textViewinfo_mod"
            android:textSize="20dp"
            android:layout_width="285dp"
            android:layout_height="261dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintVertical_bias="0.419"/>
    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editTxtmodname"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.572"
            app:layout_constraintVertical_bias="0.16"/>
</androidx.constraintlayout.widget.ConstraintLayout>

 

DeleteActivity.kt

DBHelper의 search함수와 delete함수를 불러온다.

package com.example.membermanagement

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView

class DeleteActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_delete)

        val editTxtdelname = findViewById<EditText>(R.id.editTxtmodname)
        val textViewinfo_del = findViewById<TextView>(R.id.textViewinfo_mod)
        val findBtn_del = findViewById<Button>(R.id.findBtn_mod)
        val deleteBtn = findViewById<Button>(R.id.mod_Btn)

        findBtn_del.setOnClickListener {

            val name = editTxtdelname.text.toString().trim()
            val dbHelper = DBHelper.getInstance(this,"member.db",)
            val result = dbHelper.search(name)

            textViewinfo_del.text = result
        }

        deleteBtn.setOnClickListener {

            val name = editTxtdelname.text.toString().trim()
            val dbHelper = DBHelper.getInstance(this,"member.db",)
            dbHelper.delete(name)




        }


    }
}

회원을 검색하는 SearchActivity

 

activity_search.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SearchActivity">

    <TextView
            android:id="@+id/searchnameTxt"
            android:text="검색할 이름"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.099"
            app:layout_constraintVertical_bias="0.175"/>
    <Button
            android:id="@+id/findBtn"
            android:text="회원검색"
            android:layout_width="120dp"
            android:layout_height="73dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.498"
            app:layout_constraintVertical_bias="0.724"/>
    <TextView
            android:id="@+id/textViewinfo"
            android:textSize="20dp"
            android:layout_width="285dp"
            android:layout_height="261dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintVertical_bias="0.419"/>
    <EditText
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editTxtname"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.572"
            app:layout_constraintVertical_bias="0.16"/>
</androidx.constraintlayout.widget.ConstraintLayout>

 

SearchActivity.kt

DBHelper의 search함수 호출

package com.example.membermanagement

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView

class SearchActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_search)


        val editTxtname = findViewById<EditText>(R.id.editTxtname)
        val textViewinfo = findViewById<TextView>(R.id.textViewinfo)
        val findBtn = findViewById<Button>(R.id.findBtn)

        findBtn.setOnClickListener {

            val name = editTxtname.text.toString().trim()
            val dbHelper = DBHelper.getInstance(this,"member.db",)
            val result = dbHelper.search(name)

            textViewinfo.text = result

        }

    }
}

회원정보를 수정하는 ReviseActivty

activity_revise.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".SearchActivity">

    <TextView
            android:id="@+id/textViewinfo_mod"
            android:textSize="20dp"
            android:layout_width="323dp"
            android:layout_height="146dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintVertical_bias="0.177"/>
    <Button
            android:id="@+id/findBtn_mod"
            android:text="회원검색"
            android:layout_width="64dp"
            android:layout_height="60dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.907"
            app:layout_constraintVertical_bias="0.049"/>
    <EditText
            android:layout_width="194dp"
            android:layout_height="38dp"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editTxtmodname"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintHorizontal_bias="0.516"
            app:layout_constraintVertical_bias="0.067"/>
    <TextView
            android:id="@+id/modnameTxt"
            android:text="수정할 이름"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.128"
            app:layout_constraintVertical_bias="0.08"/>

    <EditText
            android:layout_width="257dp"
            android:layout_height="43dp"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editTextmodage"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.603"
            app:layout_constraintVertical_bias="0.534"/>
    <TextView
            android:id="@+id/delnameTxt3"
            android:text="나이"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.111"
            app:layout_constraintVertical_bias="0.551"/>
    <EditText
            android:layout_width="257dp"
            android:layout_height="43dp"
            android:inputType="textPersonName"
            android:ems="10"
            android:id="@+id/editTextmodAddress"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintHorizontal_bias="0.603"
            app:layout_constraintVertical_bias="0.654"/>
    <Button
            android:id="@+id/mod_Btn"
            android:text="정보 수정"
            android:layout_width="120dp"
            android:layout_height="73dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintHorizontal_bias="0.522"
            app:layout_constraintVertical_bias="0.837"/>
    <TextView
            android:id="@+id/delnameTxt4"
            android:text="주소"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintHorizontal_bias="0.111"
            app:layout_constraintVertical_bias="0.668"/>

</androidx.constraintlayout.widget.ConstraintLayout>

 

ReviseActivity.kt
package com.example.membermanagement

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView

class ReviseActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_revise)

        val editTxtmodname = findViewById<EditText>(R.id.editTxtmodname)
        val findBtn_mod = findViewById<Button>(R.id.findBtn_mod)
        val textViewinfo_mod = findViewById<TextView>(R.id.textViewinfo_mod)
        val editTextmodage = findViewById<EditText>(R.id.editTextmodage)
        val editTextmodAddress = findViewById<EditText>(R.id.editTextmodAddress)
        val mod_Btn = findViewById<Button>(R.id.mod_Btn)

        findBtn_mod.setOnClickListener {

            val name = editTxtmodname.text.toString().trim()
            val dbHelper = DBHelper.getInstance(this,"member.db",)
            val result = dbHelper.search(name)

            textViewinfo_mod.text = result
        }
        
        mod_Btn.setOnClickListener {

            val name = editTxtmodname.text.toString().trim()
            val age = editTextmodage.text.toString().toInt()
            val address = editTextmodAddress.text.toString().trim()

            val dbHelper = DBHelper.getInstance(this,"member.db",)
                dbHelper.revise(name,age,address)

            val modInfo = dbHelper.search(name)
            textViewinfo_mod.text = modInfo

        }







    }
}

 

 

 


activity_allmember.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".AllmemberActivity">

    <TextView
            android:text="전체 회원 조회"
            android:textSize="20dp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" android:id="@+id/allmemTxt"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent" app:layout_constraintVertical_bias="0.066"/>
    <TextView
            android:layout_width="344dp"
            android:layout_height="493dp"
            android:id="@+id/allmemList"
            android:scrollbars="vertical"
            android:textSize="20dp"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>

 

 

AllmemberActivity.kt

DBHelper의 alllMember 함수 호출

package com.example.membermanagement

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.method.ScrollingMovementMethod
import android.widget.TextView

class AllmemberActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_allmember)

        val dbHelper = DBHelper.getInstance(this,"member.db",)
        val result = dbHelper.allMember()

        val allmemList = findViewById<TextView>(R.id.allmemList)
        allmemList.movementMethod = ScrollingMovementMethod()
        allmemList.text= result



    }
}

 

 

 


실행화면

Comments