本地数据库技术

AddActivity:

package com.example.yzlweek7

import android.content.ContentValues
import android.net.Uri
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.contentValuesOf
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class AddActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_add)
//        val dbHelper=MyDatabaseHelper(this,"School.db",2)
        val addButton=findViewById<Button>(R.id.addButton)
        val idNumber=findViewById<EditText>(R.id.idNumber)
        val Name=findViewById<EditText>(R.id.Name)
        val collegeName=findViewById<EditText>(R.id.collegeName)
        val ageNumber=findViewById<EditText>(R.id.ageNumber)
        val phoneNumber=findViewById<EditText>(R.id.phoneNumber)

        addButton.setOnClickListener {
//            val db=dbHelper.writableDatabase
//            val value=ContentValues().apply {
//                put("id",idNumber.text.toString())
//                put("name",Name.text.toString())
//                put("college",collegeName.text.toString())
//                put("age",ageNumber.text.toString())
//                put("phone",phoneNumber.text.toString())
//            }
//            db.insert("Student",null,value)
//            finish()
            val uri= Uri.parse("content://com.example.myprovider.provider/student")
            val values= contentValuesOf("id" to idNumber.text.toString(),
                "name" to Name.text.toString(),"college" to collegeName.text.toString(),"age" to ageNumber.text.toString(),
                "phone" to phoneNumber.text.toString())
            contentResolver.insert(uri,values)
            finish()
        }
    }
}

activity_add布局:

<?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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".AddActivity"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="10dp"
        android:text="添加学生记录"
        android:textSize="50dp">
    </TextView>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/idName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="学号">
        </TextView>

        <EditText
            android:id="@+id/idNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/idName"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/nameName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="姓名">
        </TextView>

        <EditText
            android:id="@+id/Name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/nameName"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/college"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="学院">
        </TextView>

        <EditText
            android:id="@+id/collegeName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/college"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="年龄">
        </TextView>

        <EditText
            android:id="@+id/ageNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/age"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="电话">
        </TextView>

        <EditText
            android:id="@+id/phoneNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/phone"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <Button
        android:id="@+id/addButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:text="插入"
        android:textSize="20dp"
        android:padding="20dp">
    </Button>
</LinearLayout>

DeleteActivity:

package com.example.yzlweek7

import android.content.ContentValues
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.content.contentValuesOf
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class DeleteActivity : AppCompatActivity() {
    private lateinit var queryActivity: queryActivity

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_delete)
        val updateButton=findViewById<Button>(R.id.updateButton)
        val deleteButton=findViewById<Button>(R.id.deleteButton)
//        val dbHelper=MyDatabaseHelper(this,"School.db",2)
        val id=intent.getStringExtra("student_id")
        val idNumber=findViewById<TextView>(R.id.idNumber)
        val Name=findViewById<EditText>(R.id.Name)
        val collegeName=findViewById<EditText>(R.id.collegeName)
        val ageNumber=findViewById<EditText>(R.id.ageNumber)
        val phoneNumber=findViewById<EditText>(R.id.phoneNumber)
        idNumber.text=id
        queryActivity = queryActivity()

        updateButton.setOnClickListener {
//            val db=dbHelper.writableDatabase
//            val values= ContentValues().apply {
//                put("name",Name.text.toString())
//                put("college",collegeName.text.toString())
//                put("age",ageNumber.text.toString())
//                put("phone",phoneNumber.text.toString())
//            }
//            db.update("Student",values,"id=?", arrayOf(id))
//            finish()
            val uri= Uri.parse("content://com.example.myprovider.provider/student/$id")
            val values= contentValuesOf("name" to Name.text.toString(),"college" to collegeName.text.toString(),
                "age" to ageNumber.text.toString(), "phone" to phoneNumber.text.toString())
            contentResolver.update(uri,values,null,null)
            finish()
        }

        deleteButton.setOnClickListener {
//            val db=dbHelper.writableDatabase
//            db.delete("Student","id=?", arrayOf(id))
//            finish()
            val uri=Uri.parse("content://com.example.myprovider.provider/student/$id")
            contentResolver.delete(uri,null,null)
            finish()
        }
    }

}

activity_delete布局:

<?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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".DeleteActivity"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="10dp"
        android:text="编辑学生记录"
        android:textSize="50dp">
    </TextView>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/idName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"

            android:padding="10dp"
            android:text="学号">
        </TextView>

        <TextView
            android:id="@+id/idNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/idName"
            android:padding="10dp">
        </TextView>

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/nameName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="姓名">
        </TextView>

        <EditText
            android:id="@+id/Name"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/nameName"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/college"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="学院">
        </TextView>

        <EditText
            android:id="@+id/collegeName"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/college"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/age"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="年龄">
        </TextView>

        <EditText
            android:id="@+id/ageNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/age"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        android:padding="20dp">

        <TextView
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="10dp"
            android:text="电话">
        </TextView>

        <EditText
            android:id="@+id/phoneNumber"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_toRightOf="@id/phone"
            android:maxLines="1">
        </EditText>
    </RelativeLayout>

    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"
        >

        <Button
            android:id="@+id/updateButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:padding="20dp"
            android:text="修改"
            android:textColor="@color/white">
        </Button>

        <Button
            android:id="@+id/deleteButton"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="20dp"
            android:layout_toRightOf="@+id/updateButton"
            android:layout_marginLeft="10dp"
            android:padding="20dp"
            android:text="删除"
            android:textColor="@color/white">
        </Button>
    </RelativeLayout>

</LinearLayout>

QueryActivity:

package com.example.yzlweek7

import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
import android.util.Log
import android.view.Menu
import android.view.MenuItem
import android.widget.ListView
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class queryActivity() : AppCompatActivity() {
    private val studentList=ArrayList<Student>()

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_query)
        refresh()
    }

    fun refresh() {
//        studentList.clear()
//        val dbHelper=MyDatabaseHelper(this,"School.db",2)
//        val db=dbHelper.readableDatabase
//        val cursor=db.query("Student",null,null,null,null,null,null)
//        val nameIndex = cursor.getColumnIndex("name")
//        val idIndex = cursor.getColumnIndex("id")
//        val collegeIndex = cursor.getColumnIndex("college")
//        if (cursor.moveToFirst()){
//            do{
//                val name = cursor.getString(nameIndex)
//                val id = cursor.getString(idIndex)
//                val college = cursor.getString(collegeIndex)
//                studentList.add(Student(id,name,college))
//            }while (cursor.moveToNext())
//        }
//        cursor.close()
//        val adapter=StudentAdapter(this,R.layout.student_item,studentList)
//        val listView=findViewById<ListView>(R.id.listView)
//        listView.adapter=adapter
//        listView.setOnItemClickListener{parent,view,position,id->
//            val student=studentList[position]
//            val intent= Intent(this,DeleteActivity::class.java).apply {
//                putExtra("student_id",student.id)
//            }
//            startActivity(intent)
//        }
        studentList.clear()
        val uri = Uri.parse("content://com.example.myprovider.provider/student")
        contentResolver.query(uri, null, null, null, null)?.apply {
            while (moveToNext()) {
                val name = getString(getColumnIndexOrThrow("name"))
                val id = getString(getColumnIndexOrThrow("id"))
                val college = getString(getColumnIndexOrThrow("college"))
                studentList.add(Student(id,name,college))
            }
            close()
        }
        val adapter = StudentAdapter(this, R.layout.student_item, studentList)
        val listView = findViewById<ListView>(R.id.listView)
        listView.adapter = adapter
        listView.setOnItemClickListener { parent, view, position, id ->
            val student = studentList[position]
            val intent = Intent(this, DeleteActivity::class.java).apply {
                putExtra("student_id", student.id)
            }
            startActivity(intent)
        }
    }

    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.main,menu)
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        when(item.itemId){
            R.id.refresh -> refresh()
        }
        return true
    }
}

 activity_query布局:

<?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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".queryActivity"
    android:orientation="vertical">

    <ListView
        android:id="@+id/listView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </ListView>
</LinearLayout>

MainActivity:

package com.example.yzlweek7

import android.content.ContentValues
import android.content.Intent
import android.os.Bundle
import android.util.Log
import android.widget.Button
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
import androidx.core.view.ViewCompat
import androidx.core.view.WindowInsetsCompat

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
//        val dbHelper=MyDatabaseHelper(this,"School.db",2)
//        val CreateButton=findViewById<Button>(R.id.CreateButton)
        val AddButton=findViewById<Button>(R.id.AddButton)
        val QueryOrReviseButton=findViewById<Button>(R.id.QueryOrReviseButton)
//        initStudent()

//        CreateButton.setOnClickListener {
//            dbHelper.writableDatabase
//        }

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

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

    }

    fun initStudent(){
        val dbHelper=MyDatabaseHelper(this,"School.db",2)
        val db=dbHelper.writableDatabase
        val value1= ContentValues().apply {
            put("id","2212190112")
            put("name","茁猫")
            put("college","信息学院")
            put("age","20")
            put("phone","123456")
        }
        db.insert("Student",null,value1)

        val value2=ContentValues().apply {
            put("id","2212190113")
            put("name","猪猫")
            put("college","信息学院")
            put("age","20")
            put("phone","1234567")
        }
        db.insert("Student",null,value2)
    }
}

activity_main布局:

<?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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:orientation="vertical">

<!--    <Button-->
<!--       android:id="@+id/CreateButton"-->
<!--        android:layout_width="match_parent"-->
<!--        android:layout_height="wrap_content"-->
<!--        android:text="Create database">-->
<!--    </Button>-->

    <Button
        android:id="@+id/AddButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Add data">
    </Button>

    <Button
        android:id="@+id/QueryOrReviseButton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Query&amp;Revise data">
    </Button>

</LinearLayout>

student_item布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="60dp">


    <RelativeLayout
        android:id="@+id/leftLayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="center_vertical">
        <TextView
            android:id="@+id/StudentName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:layout_marginLeft="10dp">
        </TextView>

        <TextView
            android:id="@+id/StudentId"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:layout_below="@+id/StudentName"
            android:layout_marginLeft="10dp">
        </TextView>

        <TextView
            android:id="@+id/StudentCollege"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:padding="5dp"
            android:layout_alignParentRight="true"
            android:layout_alignParentBottom="true"
            android:layout_marginRight="10dp">
        </TextView>
    </RelativeLayout>

</LinearLayout>

student:

package com.example.yzlweek7

class Student(val id:String,val name:String,val college:String)

StudentAdapter:

package com.example.yzlweek7

import android.app.Activity
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
import android.widget.TextView

class StudentAdapter(activity: Activity,val resourceId:Int,data:List<Student>):ArrayAdapter<Student>(activity,resourceId,data) {
    override fun getView(position: Int, convertView: View?, parent: ViewGroup): View {
        val view=LayoutInflater.from(context).inflate(resourceId,parent,false)
        val StudentName=view.findViewById<TextView>(R.id.StudentName)
        val StudentId=view.findViewById<TextView>(R.id.StudentId)
        val StudentCollege=view.findViewById<TextView>(R.id.StudentCollege)
        val student=getItem(position)
        if (student!=null){
            StudentName.text=student.name
            StudentId.text=student.id
            StudentCollege.text=student.college
        }
        return view
    }
}

 MyDatabaseHelper:

package com.example.yzlweek7

import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.widget.TimePicker
import android.widget.Toast

class MyDatabaseHelper(val context: Context,name:String,version:Int):SQLiteOpenHelper(context,name,null,version) {
    private val createStudent="create table Student ("+
            "id text primary key,"+
            "name text,"+
            "college text,"+
            "age text,"+
            "phone text)"


    override fun onCreate(db: SQLiteDatabase?) {
        db?.execSQL(createStudent)
        Toast.makeText(context,"Create succeeded",Toast.LENGTH_SHORT).show()
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
        db?.execSQL("drop table if exists Student")
        onCreate(db)
    }
}

menu布局:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/refresh"
        android:title="刷新">
    </item>
</menu>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值