Android开发基础------连接SQLite做增删改查(CRUD)操作

 

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

你可能感兴趣的:(Android)