Android開発基盤------SQLiteに接続して添削・改ざん(CRUD)操作を行う

6453 ワード


Androidで最もよく使われるデータベースはSQLiteデータベースで、SQLiteデータベースはストレージスペースが小さく、軽量レベルでインストールを免除し、構成の面倒を省き、操作が便利です.
前の記事では、SQLiteを使用してデータベースを作成し、データベース・テーブル構造を作成する方法について説明しました.
https://blog.csdn.net/weixin_43792401/article/details/105820407
次に、テーブルに基づいて、データベースの削除変更などの一般的な操作を行います.
まず、データベースの2つのアクセス権、すなわち読み取りと書き込みを区別して、対応する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メソッドなど)を実行する方法の2つの方法があります.前者はSQLに詳しくない人に適しており、後者は多様なSQL文の操作に適しています.
関数#カンスウ#
説明
deleterow(int id)

id値で1行のデータを削除する
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();