Android Kotlin使用SQLite案例详解

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内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Kotlin 和 Java 混合开发入门教程

    目录 一.前沿 二.学习 Kotlin 前准备 三.Kotlin 语法简介 优秀的表达式 加强版 switch 模板字符串 空指针异常不存在了 编写单例类 扩展方法 运算符重载 四.Kotlin 与 Java 混合开发 五.Kotlin 与 Java 总结 一.前沿 如果你学习过其他的编程语言,你就会发现 Java 的语法很是哆嗦,可是我们为什么没有放弃 Java 这门编程语言呢?因为 JVM 是一个非常好的平台,而且 Java 程序员目前在中国所占的比重实在是太高了.这是历史包袱导致的.暂且不

  • Kotlin封装RecyclerView Adapter实例教程

    前言 Kotlin越来越流行,在Google的推动下发展的很迅猛,现在的项目大多使用上了Kotlin,其简练的语法糖确实能减少不少代码. Adapter的封装GitHub上有很多了,但大多数封装的太好了,是的,使用太简单了,使用简单.封装力度大就导致灵活性和代码复杂性上升,谁用谁知道,当然也有封装简单的. 这里我借助Kotlin的简单语法再次操刀封装了一下. 先看下使用 单类型的使用 val adapter=recyclerView.setUp(users, R.layout.item_layo

  • 详解分别用Kotlin和java写RecyclerView的示例

    本文介绍了分别用Kotlin和java写RecyclerView的示例,分享给大家,具体如下: java:跟一般的写法一样,增加了按钮响应 MainActivity: public class MainActivity extends AppCompatActivity implements RecyclerAdapter.OnItemClickListener{ private RecyclerView mRecyclerView; private RecyclerView.LayoutMan

  • Kotlin中ListView与RecyclerView的应用讲解

    写下来自己以后看: 先是item的布局文件: 里边放了一个图片和一个文本框 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_heigh

  • 使用kotlin编写spring cloud微服务的过程

    创建工程 使用idea的spring initializr创建一个项目,语言选择kotlin, 类型为gradle. 根据需要选择依赖 配置文件 yml或者properties文件和java是完全一样的,这里不详细说明 修改build.gradle.kts中的参数: plugins { //spring boot版本 id("org.springframework.boot") version "2.3.3.RELEASE" //自动依赖包版本管理 id("

  • Android Kotlin使用SQLite案例详解

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

  • Android开发之对话框案例详解(五种对话框)

    下面通过实例代码给大家分享5种android对话框,具体内容详情如下所示: 1 弹出普通对话框 --- 系统更新 2 自定义对话框-- 用户登录 3 时间选择对话框 -- 时间对话框 4 进度条对话框 -- 信息加载.. 5 popuWindow对话框 1 弹出普通对话框 --- 系统更新  //弹出普通对话框 public void showNormalDialog(View v) { AlertDialog.Builder builder = new Builder(this); //设置D

  • Android ExpandableListView使用方法案例详解

    目录 一.前言 二.实现的功能 三.具体代码 1.主xml代码 2.父布局xml代码 3.子布局xml代码 4.主activity代码 5.adapter代码 一.前言   "好记性不如烂笔头",再次验证了这句话是真的很有道理啊,一个月前看了一下ExpandableListView的使用,今天再看居然忘了这个是干啥的了,今天就详细讲解一下ExpandableListView的使用方法,感觉对于二级条目显示功能都可以实现. 二.实现的功能 1.可实现二级列表条目显示功能,具体包括可自定义

  • Android Intent与IntentFilter案例详解

    1. 前言        在Android中有四大组件,这些组件中有三个组件与Intent相关,可见Intent在Android整个生态中的地位高度.Intent是信息的载体,用它可以去请求组件做相应的操作,但是相对于这个功能,Intent本身的结构更值得我们去研究. 2. Intent与组件        Intent促进了组件之间的交互,这对于开发者非常重要,而且它还能做为消息的载体,去指导组件做出相应的行为,也就是说Intent可以携带数据,传递给Activity/Service/Broa

  • Android 启动模式FLAG_ACTIVITY_CLEAR_TOP案例详解

    四种启动模式 standard: 只要被启动就会创建一个新的 singleTop: 栈顶复用(当被启动的Activity处于Task栈顶时,可以复用,直接调用onNewIntent方法) singleTask: 栈中复用(被启动的Activity已经处于栈中,会将上边的Activity清除出栈,调用onNewIntent) singleInstance 全局单实例(应用场景:地图,Activity初始化需要大量资源) Intent的标志位FLAG Intent.FLAG_ACTIVITY_SIN

  • kotlin之闭包案例详解

    闭包,函数式编程福音 先了解函数式编程(Functional Programming) 概念:它属于"结构化编程"的一种,主要思想是把运算过程尽量写成一系列嵌套的函数调用.函数式编程语言最重要的基础是λ运算(Lambda表达式),λ运算的函数可以接受函数当做参数或返回值. 对比函数式编程与面向对象编程 面向对象编程(Object-oriented programming,缩写OOP) 面向对象编程是一种具有对象概念的程序编程范型,它可能包含数据.属性.方法.它将对象作为程序的基本单元,

  • Android BadTokenException异常解决案例详解

    目录 解决办法1 解决方法2 总结 线上出现了如上的 crash,第一解决反应是在 show dialog 之前做个 isFinish 和 isDestroyed 判断,当我翻开代码正要解决时,我惊了,原来已经做过了如上的判断检测,示例伪代码如下: public void showDialog(Activity activity){ new OkHttp().call(new Callback(){ void onSucess(Response resp){ if(activity!=null

  • Kotlin lateinit与by lazy案例详解

    lateinit 和 lazy 是 Kotlin 中的两种不同的延迟初始化的实现 lateinit 只用于变量 var,而 lazy 只用于常量 val lazy 应用于单例模式(if-null-then-init-else-return),而且当且仅当变量被第一次调用的时候,委托方法才会执行. lazy()是接受一个 lambda 并返回一个 Lazy <T> 实例的函数,返回的实例可以作为实现延迟属性的委托: 第一次调用 get() 会执行已传递给 lazy() 的 lambda 表达式并

  • 利用Kotlin如何实现Android开发中的Parcelable详解

    坑 先来看看 Android Studio 给的自动实现. 新建一个数据类,让它实现 Parcelable data class Worker( var id: Int, var name: String, var tasks: MutableList<Int> ) : Parcelable 使用 Android Studio 自带的 Add Parcelable Implementation ,然后你就得到了... data class Worker( var id: Int, var na

  • Android notifyDataSetChanged() 动态更新ListView案例详解

    有时候我们需要修改已经生成的列表,添加或者修改数据,notifyDataSetChanged()可以在修改适配器绑定的数组后,不用重新刷新Activity,通知Activity更新ListView.今天的例子就是通过Handler AsyncTask两种方式来动态更新ListView. <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://sc

随机推荐