Android 持久化技术(二)

本文介绍如何使用Android内置的SQLite数据库进行数据存储。通过继承SQLiteOpenHelper类并重写onCreate和onUpgrade方法来创建和升级数据库。此外,还演示了如何通过按钮触发数据库的创建、数据的增删改查等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

SQLite数据库存储

sqlite是一款Android内置的轻量级关系型数据库,支持标准SQL语法,遵循数据库的ACID事务。在Android开发中可以通过SQLiteOpenHelper类来对数据库进行操作。

SQLiteOpenHelper是一个抽象类,我们必须创建一个类去继承SQLiteOpenHelper并重写抽象方法onCreate()和onUpgrade()。

SQLiteOpenHelper中还有两个非常重要的实例方法:getReadableDatabase()和getWritableDatabase().这两个方法都可以创建和打开一个现有的数据库(数据库若存在则直接打开,否则创建一个数据库),并返回一个可以对数据库进行操作的对象。不同的是,当数据库不可写入时,getReadableDatabase()将以只读的方式打开数据库,getWritableDatabase()则抛出异常。

import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper

/**
 * Created by hya on 2017/10/16.
 */

class MyDatabaseHelper(context: Context?, name: String?, factory: SQLiteDatabase.CursorFactory?, version: Int) : SQLiteOpenHelper(context, name, factory, version) {

    val CREATE_BOOK = "create table Book (" +
            "id integer primary key autoincrement," +
            "author text," +
            "name text)"



    override fun onCreate(db: SQLiteDatabase?) {
        //创建表Book
        db?.execSQL(CREATE_BOOK)
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
        //在此对表进行更新操作
    }
}
import android.content.ContentValues
import android.database.sqlite.SQLiteDatabase
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.Button

class Main2Activity : AppCompatActivity(), View.OnClickListener {


    //获取MyDatabaseHelper对象
    val databaseHelper= MyDatabaseHelper(this,"Book.db",null,1)


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main2)
        val btn_1:Button  = findViewById(R.id.btn_create) as Button
        val btn_2:Button  = findViewById(R.id.btn_add) as Button
        val btn_3:Button  = findViewById(R.id.btn_remove) as Button
        val btn_4:Button  = findViewById(R.id.btn_update) as Button
        val btn_5:Button  = findViewById(R.id.btn_query) as Button

        btn_1.setOnClickListener(this)
        btn_2.setOnClickListener(this)
        btn_3.setOnClickListener(this)
        btn_4.setOnClickListener(this)
        btn_5.setOnClickListener(this)
    }

    override fun onClick(v: View?) {

        val db = databaseHelper.writableDatabase
        val values = ContentValues()
        when(v?.id){
            R.id.btn_create -> databaseHelper.CREATE_BOOK
            R.id.btn_add ->{

                values.put("name","第一行代码")
                values.put("author","Guolin")
                db.insert("Book",null,values)
                values.clear()
                values.put("name","Kotlin")
                values.put("author","Dmitry Jemerov")
                db.insert("Book",null,values)
                values.clear()
                values.put("name","Thinking in Java")
                values.put("author","Bruce Eckel")
                db.insert("Book",null,values)
                values.clear()
            }
            R.id.btn_remove ->{

                db.delete("Book","name = ?", arrayOf("Thinking in Java"))
            }
            R.id.btn_update ->{
                values.put("author"," Dmitry Jemerov Svetlana Isakova")
                db.update("Book",values,"name = ?", arrayOf("Kotlin"))
            }
            R.id.btn_query->{
                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"))
                        Log.d("MainActivity","name = $name , author = $author")
                    }while (cursor.moveToNext())
                }
                cursor.close()
            }

        }
    }


}

添加数据

这里写图片描述


更新数据

这里写图片描述


删除数据

这里写图片描述


使用SQL操作数据库

插入数据

db.execSQL("insert into Book (name,author) values(?,?)",new String[]{"The Da Vinci Code","Dan Brown"});

更新数据

db.execSQL("update Book set name = ? where author =?",new String[]{"The Da Vinci Code2","Dan Brown"});

删除数据

db.execSQL("delete form Book where name = ?",new String[]{The Da Vinci Code2"});

查询数据

db.rawQuery("select *from Book",null);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值