开源 java android app 开发(五)文件和数据库存储

 文章的目的为了记录使用java 进行android app 开发学习的经历。本职为嵌入式软件开发,公司安排开发app,临时学习,完成app的开发。开发流程和要点有些记忆模糊,赶紧记录,防止忘记。

 相关链接:

开源 java android app 开发(一)开发环境的搭建-优快云博客

开源 java android app 开发(二)工程文件结构-优快云博客

开源 java android app 开发(三)GUI界面布局和常用组件-优快云博客

开源 java android app 开发(四)GUI界面重要组件-优快云博客

开源 java android app 开发(五)文件和数据库存储-优快云博客

开源 java android app 开发(六)多媒体使用-优快云博客

开源 java android app 开发(七)通讯之Tcp和Http-优快云博客

开源 java android app 开发(八)通讯之Mqtt和Ble-优快云博客

开源 java android app 开发(九)后台之线程和服务-优快云博客

开源 java android app 开发(十)广播机制-优快云博客

开源 java android app 开发(十一)调试、发布-优快云博客

开源 java android app 开发(十二)封库.aar-优快云博客

推荐链接:

开源C# .net mvc 开发(一)WEB搭建_c#部署web程序-优快云博客

开源 C# .net mvc 开发(二)网站快速搭建_c#网站开发-优快云博客

开源 C# .net mvc 开发(三)WEB内外网访问(VS发布、IIS配置网站、花生壳外网穿刺访问)_c# mvc 域名下不可訪問內網,內網下可以訪問域名-优快云博客

开源 C# .net mvc 开发(四)工程结构、页面提交以及显示_c#工程结构-优快云博客

开源 C# .net mvc 开发(五)常用代码快速开发_c# mvc开发-优快云博客

本章节主要内容是常态化的存储,SharedPreferences存储组件,sqlite3 数据库存储组件。

在APP中经常需要读写用户密码,或本地信息。这时就需要用到文件和数据库,需要常态化的存储编程。

本章内容如下:

1.SharedPreferences存储组件

2.sqlite3 数据库存储组件

一、SharedPreferences 是一个轻量级的存储组件,用于存储简单的键值对数据。它通常用于存储应用的配置信息、用户偏好设置等。

下面是一个使用 Java 在 Android Studio 中编写 SharedPreferences 读写操作的示例。

1.1新建SharedPreferencesHelper

public class SharedPreferencesHelper {

    private static final String PREFS_NAME = "MyAppPreferences"; // SharedPreferences 文件名

    /**
     * 保存数据到 SharedPreferences
     *
     * @param context 上下文
     * @param key     键
     * @param value   值
     */
    public static void saveData(Context context, String key, String value) {
        SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.putString(key, value);
        editor.apply(); // 或者使用 editor.commit(),但 apply() 是异步的,性能更好
    }

    /**
     * 从 SharedPreferences 读取数据
     *
     * @param context 上下文
     * @param key     键
     * @return 保存的值,如果不存在则返回 null
     */
    public static String getData(Context context, String key) {
        SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        return sharedPreferences.getString(key, null); // 第二个参数是默认值,如果键不存在则返回
    }

    /**
     * 删除 SharedPreferences 中的某个键值对
     *
     * @param context 上下文
     * @param key     键
     */
    public static void removeData(Context context, String key) {
        SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.remove(key);
        editor.apply();
    }

    /**
     * 清空 SharedPreferences 中的所有数据
     *
     * @param context 上下文
     */
    public static void clearAllData(Context context) {
        SharedPreferences sharedPreferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
        SharedPreferences.Editor editor = sharedPreferences.edit();
        editor.clear();
        editor.apply();
    }
}

1.2添加MainActivity代码

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

// 示例:保存数据
        SharedPreferencesHelper.saveData(this, "username", "JohnDoe");
        SharedPreferencesHelper.saveData(this, "email", "johndoe@example.com");

        // 示例:读取数据
        String username = SharedPreferencesHelper.getData(this, "username");
        String email = SharedPreferencesHelper.getData(this, "email");

        Log.d("username","Username: " + username);
        Log.d("email","Email: " + email);


        // 示例:删除数据
        SharedPreferencesHelper.removeData(this, "email");

        // 示例:清空所有数据
        SharedPreferencesHelper.clearAllData(this);




    }
}

工程最后如下图

二、SQLite3是一个嵌入式数据库系统,它的数据库就是一个文件。

2.1首先需要创建一个 SQLiteOpenHelper 的子类,用于管理数据库的创建和版本管理。

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "example.db";
    private static final int DATABASE_VERSION = 1;
    private static final String TABLE_NAME = "users";
    private static final String COLUMN_ID = "id";
    private static final String COLUMN_NAME = "name";
    private static final String COLUMN_AGE = "age";

    private static final String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" +
            COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            COLUMN_NAME + " TEXT, " +
            COLUMN_AGE + " INTEGER)";

    public DBHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL(CREATE_TABLE);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
        onCreate(db);
    }
}

2.2数据库操作类,创建DatabaseManager类用于执行增删改查操作。

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;

public class DatabaseManager {
    private DBHelper dbHelper;

    public DatabaseManager(Context context) {
        dbHelper = new DBHelper(context);
    }

    // 插入数据
    public void insert(String name, int age) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DBHelper.COLUMN_NAME, name);
        values.put(DBHelper.COLUMN_AGE, age);
        db.insert(DBHelper.TABLE_NAME, null, values);
        db.close();
    }

    // 更新数据
    public void update(int id, String name, int age) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        values.put(DBHelper.COLUMN_NAME, name);
        values.put(DBHelper.COLUMN_AGE, age);
        db.update(DBHelper.TABLE_NAME, values, DBHelper.COLUMN_ID + " = ?",
                new String[]{String.valueOf(id)});
        db.close();
    }

    // 删除数据
    public void delete(int id) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        db.delete(DBHelper.TABLE_NAME, DBHelper.COLUMN_ID + " = ?",
                new String[]{String.valueOf(id)});
        db.close();
    }

    // 查询所有数据
    public Cursor getAllData() {
        SQLiteDatabase db = dbHelper.getReadableDatabase();
        return db.rawQuery("SELECT * FROM " + DBHelper.TABLE_NAME, null);
    }
}

3.Activity中使用,可以使用 DatabaseManager 来执行数据库操作。

import android.database.Cursor;
import android.os.Bundle;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private DatabaseManager dbManager;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        dbManager = new DatabaseManager(this);

        // 插入数据
        dbManager.insert("Alice", 25);
        dbManager.insert("Bob", 30);

        // 更新数据
        dbManager.update(1, "Alice Smith", 26);

        // 删除数据
        dbManager.delete(2);

        // 查询数据
        Cursor cursor = dbManager.getAllData();
        if (cursor != null && cursor.moveToFirst()) {
            do {
                int id = cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_ID));
                String name = cursor.getString(cursor.getColumnIndex(DBHelper.COLUMN_NAME));
                int age = cursor.getInt(cursor.getColumnIndex(DBHelper.COLUMN_AGE));
                Toast.makeText(this, "ID: " + id + ", Name: " + name + ", Age: " + age, Toast.LENGTH_SHORT).show();
            } while (cursor.moveToNext());
            cursor.close();
        }
    }
}

最后工程如下图

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值