Andorid简单应用理财工具-初始化数据

这篇博客介绍了如何在Android应用中使用SQLite进行启动时的数据初始化。内容包括SQLite数据库的特性,如何查看和删除数据库文件,以及如何通过adb工具进行操作。文章还提及了数据库助手类的构建,用于简化数据库操作,并提供了主程序中初始化方法的修改建议。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

教程链接:启动时初始化数据

 

SQLite

一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目((Mozilla, PHP, Python)都使用了 SQLite.

更多介绍看Android 开发中使用 SQLite 数据库

 

查看与删除数据库

Android应用一旦创建好数据库后,一般的路径为

/data/data/your.app.package/databases/your-db-name

在我这个应用里的路径则为

/data/data/com.example.diligentpiggy/databases/diligentpiggy.db

 

把数据库从设备上考出来,你可以使用 adb pull 命令(或者在 IDE 上做相应操作)。存储一个修改过的数据库到设备上,使用 adb push 命令。

>adb root
>adb remount
>adb pull /data/data/com.example.diligentpiggy/databases/diligentpiggy.db

查看SQLite数据库文件,可以通过上面介绍中所说的FireFox的插件,也可以使用我常用的工具 - SQLite Database Browser


 

有时候,数据库重新测试初始化或者其他情况,我们要删除数据库,则可以通过adb shell 进行操作

>adb shell
#rm /data/data/com.example.diligentpiggy/databases/diligentpiggy.db

主程序修改

没什么可说的,直接修改initApp方法

    public void initApp() {
        Log.v("DiligentPiggy Main", "DiligentPiggy init ...");
        DBHelper dbHelper = new DBHelper(this);
        dbHelper.buildDB();
        dbHelper.close();
    }


数据库助手

按照自己的想法进行了封装,助手应该干更多的事情,所以又增加了一个构建数据库助手。

对于建表的sql本想用资源db.xml进行外部定义,还要自己解析xml什么的,就放弃了。

package com.example.diligentpiggy;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;

public class DBHelper {
    private static final String LOG_TAG = "DiligentPiggy_BilldbHelper";
    
    private static final String DB_NAME = "diligentpiggy.db";
    
    private SQLiteDatabase db;
    private Context context;
    
    public DBHelper(Context c) {
        context = c;
        // 创建SQLite数据库连接
        db = context.openOrCreateDatabase(DB_NAME, SQLiteDatabase.OPEN_READWRITE, null);
        Log.v(LOG_TAG, "db path = " + db.getPath());
    }
    
    public void buildDB() {
        // 检测是否需要构建
        if(!BuildDBHelper.checkIsBuilded(db)) {
            BuildDBHelper.build(db);
        }
    }
    
    public SQLiteDatabase getDB() {
        return db;
    }
    
    public static class BuildDBHelper {
        public static Boolean checkIsBuilded(SQLiteDatabase db) {
            Boolean result = false;
            try {
                String columns[] = {"type", "name"};
                Cursor cursor = db.query("sqlite_master", columns, "name='config'", null, null, null, null);
                result = cursor.getCount() > 0;
                cursor.close();
                Log.v(LOG_TAG, "Check is Builded ok, result is "+result.toString());
            } catch(Exception e) {
                Log.v(LOG_TAG, "Check is Builded err, "+e.getMessage());
            }
            return result;
        }
        
        public static void build(SQLiteDatabase db) {
            createTable_config(db);
            createTable_bills(db);
            createTable_acctitem(db);
        }
        
        public static void createTable_config(SQLiteDatabase db) {
            try {                
                db.execSQL("CREATE TABLE config("
                        +" id INTEGER PRIMARY KEY, "
                        +" name TEXT "
                        +");");
                Log.v(LOG_TAG, "Create table config ok");
            } catch(Exception e) {
                Log.v(LOG_TAG, "Create table config err, table exists");
            }
        }
        
        public static void createTable_bills(SQLiteDatabase db) {
            try {
                db.execSQL("CREATE TABLE bills("
                        +" id INTEGER PRIMARY KEY, "
                        +" fee INTEGER, "
                        +" userid INTEGER, "
                        +" sdate TEXT, "
                        +" stime TEXT, "
                        +" desc TEXT "
                        +");");
                Log.v(LOG_TAG, "Create table bills ok");
            } catch(Exception e) {
                Log.v(LOG_TAG, "Create table bills err, table exists");
            }
        }
        
        public static void createTable_acctitem(SQLiteDatabase db) {
            try {
                db.execSQL("CREATE TABLE acctitem("
                        +" id INTEGER PRIMARY KEY, "
                        +" pid INTEGER, "
                        +" name TEXT "
                        +");");
                Log.v(LOG_TAG, "Create table acctitem ok");
            } catch(Exception e) {
                Log.v(LOG_TAG, "Create table acctitem err, table exists");
            }
            
            try {
                db.execSQL("insert into acctitem values (1,null,'收入')");
                db.execSQL("insert into acctitem values (2,1,'工资')");
                db.execSQL("insert into acctitem values (9998,1,'其他')");
                db.execSQL("insert into acctitem values (0,null,'支出')");
                db.execSQL("insert into acctitem values (3,0,'生活用品')");
                db.execSQL("insert into acctitem values (4,0,'水电煤气费')");
                db.execSQL("insert into acctitem values (5,0,'汽油费')");
                db.execSQL("insert into acctitem values (9999,0,'其他')");
                Log.v(LOG_TAG,"insert into acctitem ok");
            } catch(Exception e) {
                Log.v(LOG_TAG,"insert into acctitem err, " + e.getMessage());
            }
        }
    }
    
    public void close() {
        db.close();
    }
    
}

所有源码可以到github上下载,地址: https://github.com/lazyboywu/diligentpiggy/tree/coures_2

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值