文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Android Kotlin使用SQLite案例详解

2024-04-02 19:55

关注

Kotlin使用SQLite

首先确定我们的目标,SQLite只是一种工具,我们需要掌握就是增删改查就可以,我们真正需要动脑的还是项目中的业务逻辑。我这篇文章写得比较适合新手,没用过SQLite的同学。
前期准备工作
新建一个类MyDataBaseHelper继承自SQLiteOpenHelper,代码如下:


class MyDatabaseHelper(var context: Context, name: String, version: Int) :
    SQLiteOpenHelper(context, name, null, version) {
    public var createBook="create table Book (" +
            "id integer primary key autoincrement," +
            "author text," +
            "price real," +
            "pages integer," +
            "name text)"

    override fun onCreate(db: SQLiteDatabase?) {
//        下面这个todo 如果不注释掉的话就会报错。
//        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        db?.execSQL(createBook)
        Toast.makeText(context,"Create Successed",Toast.LENGTH_LONG).show()
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
//        TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
        db?.execSQL("drop table if exists Book")
        onCreate(db)
    }
}

对数据进行操作
操作比较简单,下面直接看代码:
Activity中


class MySQLite : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_my_sqlite)
        val dbHelper=MyDatabaseHelper(this,"BookStore.db",1)
        
        btnCreateDataBase.setOnClickListener {
            dbHelper.writableDatabase
        }
        
        btnAddData.setOnClickListener {
            val db=dbHelper.writableDatabase
            val Values1=ContentValues().apply {
//                第一条数据
                put("name","The Da Vinci Code")
                put("author","Dan Broen")
                put("pages",454)
                put("price",16.96)
            }
            db.insert("Book",null,Values1)
            val  values2=ContentValues().apply {
//                第二条数据
                put("name","The Lost Symbol")
                put("author","Dan Brown")
                put("pages",510)
                put("price",19.95)
            }
            db.insert("Book",null,values2)
        }
        btnUpdateData.setOnClickListener {
            val db=dbHelper.writableDatabase
            val values=ContentValues()
            values.put("price",10.99)
            db.update("Book",values,"name=?", arrayOf("The Da Vinci Code"))
        }
        btnDeleteData.setOnClickListener {
            val db=dbHelper.writableDatabase
            db.delete("Book","pages>?", arrayOf("500"))
        }
        btnQueryData.setOnClickListener {
            val db=dbHelper.writableDatabase
//            查询Book表中所有数据
//            这里获取到是Cursor对象
            val cursor=db.query("Book",null,null,null,null,null,null)
            if (cursor.moveToFirst()){
                do {
                    val name=cursor.getString(cursor.getColumnIndex("name"))
                    val author=cursor.getString(cursor.getColumnIndex("author"))
                    val pages=cursor.getString(cursor.getColumnIndex("pages"))
                    val price=cursor.getString(cursor.getColumnIndex("price"))
                    Log.d("MainActivity","book name is $name")
                    Log.d("MainActivity","author is $author")
                    Log.d("MainActivity","pages is $pages")
                    Log.d("MainActivity","price is $price")
                }while (cursor.moveToNext())
            }
            cursor.close()
        }
    }
}

布局文件


<?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=".sqlite.MySQLite">

    <Button
        android:id="@+id/btnCreateDataBase"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="CreateDataBase"
        android:textAllCaps="false"
        app:layout_constraintTop_toTopOf="parent" />

    <Button
        android:id="@+id/btnAddData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="AddData"
        android:textAllCaps="false"
        app:layout_constraintTop_toBottomOf="@+id/btnCreateDataBase" />

    <Button
        android:id="@+id/btnUpdateData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="UpdateData"
        android:textAllCaps="false"
        app:layout_constraintTop_toBottomOf="@+id/btnAddData" />

    <Button
        android:id="@+id/btnDeleteData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="DeleteData"
        app:layout_constraintTop_toBottomOf="@+id/btnUpdateData" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btnQueryData"
        android:text="Query Data"
        android:textAllCaps="false"
        app:layout_constraintTop_toBottomOf="@+id/btnDeleteData"/>
</androidx.constraintlayout.widget.ConstraintLayout>

到此这篇关于Android Kotlin使用SQLite案例详解的文章就介绍到这了,更多相关Android Kotlin使用SQLite内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-移动开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯