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);