Android Sqlite数据库读写辅助类

Android 100次浏览 本站
Android Sqlite数据库读写封装辅助类,类似C#的数据库读写,非实体操作。
package com.rc114.scanner;
 
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
 
import org.json.JSONArray;
import org.json.JSONObject;
 
import java.io.File;
import java.io.IOException;
 
//sqlite数据库读写辅助类
public class SqliteHelper {
    public String DbFile;
 
    //构造函数,需传入sqlite数据文件路径
    public SqliteHelper(String dbpath) {
        DbFile = dbpath;
        File file = new File(DbFile);
        File parentFile = file.getParentFile();
        if (!parentFile.exists()) {
            parentFile.mkdirs();
        }
        if (!file.exists()) {
            try {
                file.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
 
    }
 
    //执行sql语句
    public void excute(String sql) {
        SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DbFile, null);
        db.execSQL(sql);
        db.close();
    }
 
    //执行sql语句返回单个值(数值)
    public int excuteScalerInt(String sql) {
        int ret = -1;
        SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DbFile, null);
        Cursor cursor = db.rawQuery(sql, null);
        while (cursor.moveToNext()) {
            ret = cursor.getInt(0); //获取第一列的值,第一列的索引从0开始
        }
        cursor.close();
        db.close();
        return ret;
    }
 
    //执行sql语句返回单个值(字符串)
    public String excuteScaler(String sql) {
        String ret = "";
        SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DbFile, null);
        Cursor cursor = db.rawQuery(sql, null);
        while (cursor.moveToNext()) {
            ret = cursor.getString(0); //获取第一列的值,第一列的索引从0开始
        }
        cursor.close();
        db.close();
        return ret;
    }
 
    //执行sql语句返回json数组
    public JSONArray queryJsonArray(String sql) {
        SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(DbFile, null);
        Cursor cursor = db.rawQuery(sql, null);
        JSONArray array = new JSONArray();
        cursor.moveToFirst();
        while (cursor.isAfterLast() == false) {
            int totalColumn = cursor.getColumnCount();
            JSONObject object = new JSONObject();
            for (int i = 0; i < totalColumn; i++) {
                if (cursor.getColumnName(i) != null) {
                    try {
                        if (cursor.getString(i) != null) {
                            object.put(cursor.getColumnName(i), cursor.getString(i));
                        } else {
                            object.put(cursor.getColumnName(i), "");
                        }
                    } catch (Exception e) {
                        Log.d("QueryJsonErr", e.getMessage());
                    }
                }
            }
            array.put(object);
            cursor.moveToNext();
        }
        cursor.close();
        db.close();
        return array;
    }
 
    //执行sql语句返回json字符串
    public String queryJson(String sql) {
        JSONArray array = queryJsonArray(sql);
        return array.toString();
    }
 
 
}
使用方式:
//数据库
String dbFile = "/data/data/" + getPackageName() + "/databases/scan.db";
SqliteHelper db = new SqliteHelper(dbFile);
 
//初始化数据表
if (db.excuteScalerInt("select count(*)  from sqlite_master where type='table' and name ='RC_Scan'") == 0) {
	db.excute("CREATE TABLE [RC_Scan](\n" +
			"  [GID] NTEXT, \n" +
			"  [Raw] NTEXT, \n" +
			"  [Time] DATETIME, \n" +
			"  [Status] INT, \n" +
			"  [PName] NTEXT, \n" +
			"  [Pid] NTEXT);");
}
//插入数据
db.excute("INSERT INTO RC_Scan(GID,Raw,Time,Status,PName,Pid)VALUES('" + UUID.randomUUID().toString() + "','test','2023-02-08 10:11:00',0,'张三','123456789')");
 
//查询数据(Json字符串)
String json = db.queryJson("SELECT * FROM RC_Scan WHERE Pid='123456789'");
 
//查询数据(JsonArray)
JSONArray array = db.queryJsonArray("SELECT * FROM RC_Scan WHERE Pid='123456789'");
 
//查询数据(单个值-字符串)
String name = db.excuteScaler("SELECT PName FROM RC_Scan WHERE Pid='123456789'");
 
//查询数据(单个值-数字)
String status = db.excuteScaler("SELECT Status FROM RC_Scan WHERE Pid='123456789'");

发表评论

电子邮件地址不会被公开。 必填项已用*标注