Android Kotlin使用SQLite案例详解
作者:所以还是劝你学习 发布时间:2022-11-01 19:20:37
标签: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>
来源:https://blog.csdn.net/weixin_42415553/article/details/109720924


猜你喜欢
- ThreadLocal是什么?该类提供了线程局部 (thread-local) 变量。这些变量不同于它们的普通对应物,因为访问某个变量(通过
- 前面文章讲述了Android手机与BLE终端之间的通信,而最常见的BLE终端应该是苹果公司倡导的iBeacon基站。iBeacon技术基于B
- 要点有另一种方法来完成语句映射。 它们映射的语句可以不用 XML 来配置,而可以使用 Java 注解来配置。使用注解来映射简单语句会使代码显
- 在网上看到了一个IOS组件PendulumView,实现了钟摆的动画效果。由于原生的进度条确实是不好看,所以想可以自定义View实现这样的效
- 一、Filefile是文件和目录路径名的抽象表示1.1 File的用法用法:File file = new File("路径名&q
- 在学习了不少使用string处理字符串的方法后,对于这方面基础内容模块已经初步掌握。对于java面试时,字符串是比较基础和重点的模块,所以在
- 实验环境hadoop版本:3.3.2jdk版本:1.8hadoop安装系统:ubuntu18.04编程环境:IDEA编程主机:windows
- JetBrains JVM Debugger Memory View plugin在我最近的研发活动期间寻找新的工具,以提高我的开发经验,使
- 0. Grinder – Grinder是一个开源的JVM负载测试框架,它通过很多负载注射器来为分布式测试提
- 1. 需要准备:apache-maven-3.2.3.zip包 Repository.rar本地仓库
- Java 7的这个新特性改变了警告的对象。构建这些类型毕竟有破坏类型安全的风险,这总得有人知道。但 API 的用户对此是无能为力的,不管do
- 最近利用下班的时候看了看的think in java感觉再看 和第一次看大不一样接下来说一下java中对象和引用的关系,以及内部类的概念。1
- 传统界面的布局方式总是行列分明、坐落有序的,这种布局已是司空见惯,在不知不觉中大家都已经对它产生了审美疲劳。这个时候瀑布流布局的出现,就给人
- 前言本文主要给大家介绍的是关于Java通过Class类获取Class对象的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的
- 1.C++中的时间:(1) time_t其实是一个64位的long int类型(2) time函数:函数简介:函数名: time
- 文章描述这个效果可能很多人都在抖音看到过,即把一个短视频,转成数字、字母等乱码组成的形式进行播放。开发环境.NET Framework版本:
- 常用的Dialog有确认对话框,单选按钮对话框,多选按钮对话框,复选按钮对话框另外还有自定义的对话框AlertDialog的常用方法setT
- 首先来看看以下程序将会打印出什么:class Dog { public static void bark
- 本文实例实现C#以一个收银付费的小程序演示switch case语法如何使用,读入用户选择,把用户的选择赋值给变量n,再根据用户的输入提示付
- 项目完整代码链接:代码链接跨服务上传文件示意图一、创建项目springboot:2.2.6JDK:1.8由于资源有限,就用不同端口表示不同服