SQLite数据库

这篇具有很好参考价值的文章主要介绍了SQLite数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

SQLite数据库

在Android中的使用

SQLiteOpenHelper中的方法

增删改查

添加数据 insert()

查询数据 query(),rawQuery()

查询和添加案例

数据库帮助类:

MainActivity:

Activity_main.xml:

SQLite数据库

        SQLite是一个轻量级的嵌入数据库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。您不需要在系统中安装配置。SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件

在Android中的使用

        Android为了让用户能够更加方便地管理数据库,专门提供了一个 SQLiteOpenHelper帮助类,借助这个类就可以非常简单地对数据库进行创建。SQLiteOpenHelper是一个抽象类,这意味着如果想使用它的话,这就需要自己 创建一个类去继承SQLiteOpenHelper帮助类就可以了

class MyDBOpenHelper(context:Context,name:String,factory:CursorFactory,version
                : Int) : SQLiteOpenHelper(context,name,factory,version) {
}

        SQLiteOpenHelper有三个构造方法可供重写,一般使用参数少点的那个构造方 法即可,必须要有它才能对数据库进行操作,这个构造方法中,接受4个参数

SQLite数据库

Cursor游标结果集

        游标是一段私有的SQL工作区,即一段内存区域,用于暂时存放受SQL语句影响到的数据。通俗理解就是将受影响的数据暂时存放到一个内存区域的虚表中,这个虚表就是游标。

        游标在数据库的事务回滚中有非常重要的作用。由于对数据库的操作会暂时存放在游标中,只要不提交,就可以根据游标中的内容进行回滚。这样有利于数据库的安全。

SQLiteOpenHelper中的方法

SQLite数据库

        SQLiteOpenHelper  有两个抽象方法 onCreate() onUpgrade()。我们必须在自己的帮助类中重写这两个方法。除外,其中还有两个重要的实例方法getReadableDatabase()getWritableDatabase()

        这两个方法都可以创建或打开一个现有的数据库(如果一个数据库存在则直接打开,否则新建一个新的数据库),并返回一个可以对数据库进行读 [] 操作的对象。不同的是:当数据库不可写入(如磁盘空间满时),getReadableDatabase()返回的对象是将以只读方式打开数据库,另一个会抛出一个异常

class MyDBOpenHelper(context:Context,name:String,factory:CursorFactory,version: Int)
                                 : SQLiteOpenHelper(context,name,factory,version) {
    //创建数据库
    override fun onCreate(db: SQLiteDatabase?) {
        //可能为null要用空安全操作 >>> ?.
        db?.execSQL("create table stu_info(" +
                "id INTEGER primary key autoincrement," +
                "sex varchar(10)," +
                "name varchar(20))")
    }
    //升级数据库
    override fun onUpgrade(db: SQLiteDatabase?, p1: Int, p2: Int) {
    }
}

增删改查

        对数据库中的数据表的操作,一共有四种:添加、查询、更新、删除。每一种 操作又各自对应了一种SQL命令:insert(添加),select(查询),update(更新),delete(删除)。

添加数据 insert()

SQLite数据库

方法有三个参数

  1. 第一个参数表名
  1. 第二个参数是某些为空的列自动赋值
  1. 第三个参数是ContentValue对象,它提供了一系列put()方法重载,用于向ContentValues中添加对象,只需要将表中的每个列名以及相应的待添加的数 据传入即可。

查询数据 query(),rawQuery()

  1. query(表名, 要查询出来的列名, 查询条件, 对应于selection语句中占位符的值, groupBy, having, orderBy, limit)
  1. rawQuery(sql语句String[ ]  是?的条件参数,如果?这个内占位符容为null的话就表示把所有的都查出来)

查询和添加案例

创建stu_db数据库和stu_info学生表,对表进行添加和动态查询操作,效果图:

SQLite数据库文章来源地址https://www.toymoban.com/news/detail-413695.html

数据库帮助类:

class MyDBOpenHelper(context:Context)
                                 : SQLiteOpenHelper(context,"stu_db",null,1) {
    //创建数据库
    override fun onCreate(db: SQLiteDatabase?) {
        //db要用空安全操作?.
        db?.execSQL("create table stu_info(" +
                "id INTEGER primary key autoincrement," +
                "sex varchar(10)," +
                "name varchar(20))")
    }

    //升级数据库
    override fun onUpgrade(db: SQLiteDatabase?, p1: Int, p2: Int) {
    }
}

MainActivity

class MainActivity : AppCompatActivity() {
    private var result = "" //反馈文本字符串
    private var myDBHelper:SQLiteOpenHelper?= null//定义数据库帮助类对象
    private var db:SQLiteDatabase?=null//定义一个可以操作的数据库对象
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        initView() //初始化方法
        butAdd() //添加按钮监听器
        butQuery() // 查询按钮监听器
    }
    //初始化方法
    fun initView(){
        myDBHelper = MyDBOpenHelper(this)//实例化数据库帮助类
        db = myDBHelper?.writableDatabase //创建获取可读写操作的数据库
    }
    //添加按钮监听器
    fun butAdd(){
        insert?.setOnClickListener {
            var contentValues = ContentValues() //用 contentValue 表示一行
            //把输入的id,name,sex放到对应的列
            contentValues.put("id",idText.text.toString())
            contentValues.put("name",nameText.text.toString())
            contentValues.put("sex",sexText.text.toString())
            //调用insert()添加
            var insert = db?.insert("stu_info", null, contentValues)
            //提示框
            if(insert!=null){
                Toast.makeText(this,"添加成功!",Toast.LENGTH_SHORT).show()
            }else{
                Toast.makeText(this,"添加失败!",Toast.LENGTH_SHORT).show()
            }
        }
    }
    // 查询按钮监听器
    fun butQuery(){
        query?.setOnClickListener {
           var paramName:String = "id" //定义查询条件,默认根据id查询
            var arrayOf = arrayOf<String?>(null) //查询条件参数数组
            //如果id未输入根据 name查 ?: sex查
            if (idText?.text.toString()!=""){
                arrayOf[0]=idText?.text.toString() //获取id框数据,放入数组
           }else if(nameText?.text.toString()!=""){
               paramName = "name"
                arrayOf[0]=nameText?.text.toString()//获取name框数据,放入数组
           }else if(sexText?.text.toString()!=""){
               paramName = "sex"
                arrayOf[0]=sexText?.text.toString()//获取sex框数据,放入数组
           }
            //调用rawQuery传入sql和参数,获取cursor结果集
            var cursor = db?.rawQuery(
                    "select * from stu_info where ${paramName}=?" , arrayOf)
            if (cursor?.count!=0){
                result = "" //清空结果反馈字符串
                //遍历结果集,追加反馈文本字符串
                while (cursor?.moveToNext() == true){
                   result = "${result}\n" +
 "学号:${cursor.getString(0)} 性别:${cursor.getString(1)} 姓名:${cursor.getString(2)}\n" +
                            ">>>>>>>>>>>"
                }
                tv.text = result//tv框打印反馈字符串
            }else{
                //如果结果集为空,tv打印对应提示
                tv.text = "${paramName}=${arrayOf[0]},不存在"
            }
        }
    }
}

Activity_main.xml:

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

    <TextView
        android:id="@+id/tv"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:text="(^-^)"
        android:textSize="20sp"
        android:layout_margin="40dp"
        android:layout_gravity="center"/>
    <EditText
        android:hint="学号:"
        android:id="@+id/idText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    <EditText
        android:hint="姓名:"
        android:id="@+id/nameText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <EditText
        android:hint="性别:"
        android:id="@+id/sexText"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        >
        <Button
            android:id="@+id/insert"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="添加"
            android:textSize="25sp"
            android:layout_margin="2dp"
            android:layout_weight="1"
            />
        <Button
            android:id="@+id/clear"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="清除"
            android:textSize="25sp"
            android:layout_margin="2dp"
            android:layout_weight="1"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <Button
            android:id="@+id/query"
            android:layout_margin="3dp"
            android:layout_weight="1"
            android:text="查询"
            android:textSize="25sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
    </LinearLayout>
</LinearLayout>

到了这里,关于SQLite数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android开发——SQLite数据库的使用

    1、SQLite的特性 SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库不一样,您不需要在系统中配置。 SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。

    2024年02月15日
    浏览(35)
  • Android中SQLite数据库查询详解

    SQLite在线教程网址https://www.yiibai.com/sqlite table :表名。相当于select *** from table语句中的table 。如果是多表联合查询,可以用逗号将两个表名分开。 columns :要查询出来的列名(字段),全部查询就写null。相当于 select *** from table语句中的 ***部分 。如果是查询多个参数,可以用

    2024年01月16日
    浏览(42)
  • Android Studio使用SQLite数据库

    1.能使用SQLiteDatabase类操作数据库与表 2.能使用SQLiteDatabaseHelper类操作数据库与表 无论是安卓应用还是苹果应用,都提供了本地轻量级数据库——SQLite,可以创建和删除数据库,还能对数据表进行增删改查操作。 SQLite由SQL编译器、内核、后端以及附件几个部分构成。SQLite通过

    2024年02月01日
    浏览(36)
  • Android中SQLite数据库增删改查/使用ListView显示数据库内容(有完整源码)

    android作业笔记 编写SQLite数据库相关操作的代码,实现下图中的功能(第一排按钮布局没有调整屏幕大小适配…不过下面那一排加了 android:layout_weight=“1”) SQLite展示 先上源码:https://gitee.com/meng-fanyang/SQLiteWork 里边有三个分支,对应这不同的写法: master主分支是写的可以说

    2024年02月09日
    浏览(34)
  • Android使用SQLite数据库实现基本的增删改查

    目录 一、创建activity_main和MainActivity界面 二、实现查询/删除功能创建activity_delete和DeleteActivity 三、实现添加功能创建activity_add和AddActivity  四、实现更新功能创建activity_update和UpdateActivity 五、创建user_data类、userInfo类和增加权限 总结 activity_main如图:  MainActivity如下 layout界面

    2024年02月08日
    浏览(37)
  • Android Studio 使用SQLite数据库来创建数据库+创建数据库表+更新表再次往表添加字段

    目录 一.前言 二.SQLite数据库介绍 1.什么是SQLite数据库 2.特点 3.SQLite 操作API 4.SQLite数据类型 三.SQlite数据库的使用 1.创建类继承SQLiteOPenHelper 2.创建数据库 3.创建数据库表 4.更新表添加字段 完整代码 扩展 总结 我们在使用Android进行开发的时候不可避免的要使用到数据,那么就需

    2024年02月08日
    浏览(42)
  • 【Android Studio】安卓APP期末作品记录之连接sqlite数据库以及简单的sqlite增删改查

    期末作品要求使用数据库,我自己折腾了一会,又看了很多博主发的文章,终于成功了,特此记录:使用SQLiteDatabase和SQLiteOpenHelper连接已有sqlite数据库。 第一步,导入sqlite数据库 因为我已经创建好了一个sqlite数据库,所以第一步得将我的数据库导入项目中 在app — src — ma

    2024年02月03日
    浏览(40)
  • 【Android入门到项目实战--4.5】—— SQLite数据库存储实现增删改查

    目录 一、添加数据 二、更新数据 三、删除数据 四、查询数据 使用完整SQL语言操作数据库 1、添加数据  2、更新数据 3、删除数据  4、查询数据 前面学习了创建和升级数据库,本篇文章主要讲解SQLite数据库存储实现增删改查(CRUD)操作。         调用SQLiteOpenHelper的get

    2024年02月04日
    浏览(37)
  • Android——Sqlite数据库——实现联系人信息的添加、查询、修改以及删除功能

        掌握常用布局和基本控件的使用方法     掌握界面图像显示的使用方法     掌握SQLite数据库的创建和基本操作方法 通过线性布局和相对布局来搭建Activity界面,在MainActivity中编写逻辑代码,运行程序,输入两条联系人信息分别点击“添加”“查询”“修改”“

    2024年02月07日
    浏览(32)
  • 安卓大作业:使用Android Studio开发天气预报APP(使用sqlite数据库)

    今天我来分享一下如何使用Android Studio开发一个天气预报APP。在文中,我们将使用第三方接口获取实时天气数据,并显示在APP界面上。 首先,打开Android Studio并创建一个新的项目。在创建新项目时,我们需要设置项目名称、包名和支持的最低API级别。 为了获取实时天气数据,

    2024年02月08日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包