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