Android最常用的数据库是SQLite数据库,SQLite数据库占用的存储空间小,轻量级免安装,省去配置的麻烦,操作方便。
在之前的文章中谈到了如何使用SQLite创建一个数据库并且创建数据库表结构
https://blog.csdn.net/weixin_43792401/article/details/105820407
现在我们在表的基础上,进行数据库的增删改查等常规操作。
首先,要分清数据库的两个权限,即读和写权限,获取相应的SQLiteDataBase对象。
SQLiteDatabase db = myDBHelper.getReadableDatabase();
SQLiteDatabase db = myDBHelper.getWritableDatabase();
myDBHelper类继承了SQLiteOpenHelper类,创建一个名为person的表
字段 | 说明 |
_id | id主键递增 |
name | 名字 |
age | 年龄 |
company | 公司 |
money | 资产 |
package com.example.applicationfi.lab4;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import androidx.annotation.Nullable;
public class MyDBHelper extends SQLiteOpenHelper {
public MyDBHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
String create_table_sql = "create table person(_id integer primary key autoincrement,name text,age integer,company text,money text)";
db.execSQL(create_table_sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
将增删改查封装在OperateDB类(命名随便来了)中,构造方法中传入SQLiteDatabse对象。这里执行数据库操作可以采用两种方法,一种是使用SQLiteDatabse类中已封装好的CRUD操作函数,另一种是直接使用execSQL(sql)执行SQL代码(例如delAll方法)。前者适合于对SQL不熟悉的人群使用,后者更适合于多样化的SQL语句操作。
函数 | 说明 |
deleterow(int id) |
按id值删除某一行数据 |
addrow(PersonData personData) |
添加一行数据 |
updatePerson(PersonData personData) |
更新一组数据 |
query_name_row(String name) |
查询某个名字的数据 |
delAll() |
删除所有数据,可以用truncate重置id自增值 |
query_all() |
查询所有数据 |
package com.example.applicationfi.lab4;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class OperateDB {
SQLiteDatabase db;
public OperateDB(SQLiteDatabase db){
this.db = db;
}
public long deleterow(int id){
return db.delete("person","_id="+id,null);
}
public long addrow(PersonData personData){
ContentValues contentValues = new ContentValues();
contentValues.put("name",personData.getPname());
contentValues.put("age",personData.getAge());
contentValues.put("company",personData.getCompany());
contentValues.put("money",personData.getMoney());
return db.insert("person",null,contentValues);
}
public long updatePerson(PersonData personData){
ContentValues contentValues = new ContentValues();
contentValues.put("name",personData.getPname());
contentValues.put("age",personData.getAge());
contentValues.put("company",personData.getCompany());
contentValues.put("money",personData.getMoney());
return db.update("person",contentValues,"_id="+personData.get_id(),null);
}
public List query_name_row(String name){
ContentValues contentValues = new ContentValues();
contentValues.put("name",name);
Cursor cursor = db.query("person",null,"name='"+name+"'",null,null,null,null);
List resultlist = new ArrayList();
while (cursor.moveToNext()){
PersonData personData = new PersonData();
personData.set_id(cursor.getInt(0));
personData.setPname(cursor.getString(1));
personData.setAge(cursor.getInt(2));
personData.setCompany(cursor.getString(3));
personData.setMoney(cursor.getString(4));
resultlist.add(personData);
}
return resultlist;
}
public void delAll(){
db.execSQL("delete from person");
}
public List query_all(){
List list = new ArrayList();
Cursor cursor = db.query("person", new String[]{"_id","name", "age","company","money"}, null, null, null, null, null);
while(cursor.moveToNext()){
PersonData personData = new PersonData();
personData.set_id(cursor.getInt(0));
personData.setPname(cursor.getString(1));
personData.setAge(cursor.getInt(2));
personData.setCompany(cursor.getString(3));
personData.setMoney(cursor.getString(4));
list.add(personData);
}
return list;
}
}
PersonData类是人的实体类,如有需要,可以参考下面的代码。
package com.example.applicationfi.lab4;
public class PersonData {
private String pname,company,money;
private int age,_id;
public int get_id() {
return _id;
}
public void set_id(int _id) {
this._id = _id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getCompany() {
return company;
}
public void setCompany(String company) {
this.company = company;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
}
在onCreate创建页面时执行所有数据查询操作示例。
//创建SQLite数据库
MyDBHelper myDBHelper = new MyDBHelper(this,"PersonDB",null,1);
SQLiteDatabase db = myDBHelper.getReadableDatabase();
//查询数据
final OperateDB operateDB = new OperateDB(db);
List plist = new ArrayList<>();
plist = operateDB.query_all();