You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于SQLite实现数据录入、后台计算及结果展示的技术咨询

嘿,看你正在搞Android里的SQLite双表存储+计算的功能,我结合你给出的现有代码,整理了一套完整的实现方案,帮你理清思路:

双表设计与实现方案

1. 表结构规划

我按照你的需求拆分了两个表,职责清晰:

  • 输入数据表:专门存储客户端提交的REAL类型原始数据,搭配必要的标识字段方便溯源
  • 计算结果表:存储后台运算后的结果,通过外键关联输入表,保证数据的关联性

2. 完整建表代码实现

我补全了你代码里省略的部分,同时规范了DataContract的结构:

@Override 
public void onCreate(SQLiteDatabase db) {
    // 创建输入数据表
    String createInputTableSQL = "CREATE TABLE " + DataContract.InputTable.TABLE_NAME + "("
            + DataContract.InputTable._ID + " INTEGER PRIMARY KEY NOT NULL, "
            + DataContract.InputTable.PRODUCT_NAME + " TEXT NOT NULL, "
            + DataContract.InputTable.INPUT_VALUE + " REAL NOT NULL, " // 存储客户端输入的REAL数据
            + DataContract.InputTable.CREATED_AT + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP)";
    db.execSQL(createInputTableSQL);

    // 创建计算结果表(带外键关联输入表)
    String createResultTableSQL = "CREATE TABLE " + DataContract.ResultTable.TABLE_NAME + "("
            + DataContract.ResultTable._ID + " INTEGER PRIMARY KEY NOT NULL, "
            + DataContract.ResultTable.INPUT_DATA_ID + " INTEGER NOT NULL, " // 关联输入表的ID
            + DataContract.ResultTable.CALCULATED_VALUE + " REAL NOT NULL, " // 存储计算后的结果
            + DataContract.ResultTable.CALCULATED_AT + " TIMESTAMP DEFAULT CURRENT_TIMESTAMP, "
            + "FOREIGN KEY(" + DataContract.ResultTable.INPUT_DATA_ID + ") REFERENCES " 
            + DataContract.InputTable.TABLE_NAME + "(" + DataContract.InputTable._ID + "))";
    db.execSQL(createResultTableSQL);
}

// 对应的DataContract常量定义
public class DataContract {
    // 输入数据表的常量
    public static class InputTable {
        public static final String TABLE_NAME = "input_data";
        public static final String _ID = "_id";
        public static final String PRODUCT_NAME = "product_name";
        public static final String INPUT_VALUE = "input_value";
        public static final String CREATED_AT = "created_at";
    }

    // 计算结果表的常量
    public static class ResultTable {
        public static final String TABLE_NAME = "calculated_results";
        public static final String _ID = "_id";
        public static final String INPUT_DATA_ID = "input_data_id";
        public static final String CALCULATED_VALUE = "calculated_value";
        public static final String CALCULATED_AT = "calculated_at";
    }
}

3. 核心流程提示

  • 客户端输入REAL数据后,先将数据插入input_data表
  • 后台从输入表取出数据完成计算,再把结果插入calculated_results表,同时关联对应的input_data_id
  • 展示结果到TextView的示例代码:
// 从结果表获取最新计算结果并展示
SQLiteDatabase db = getReadableDatabase();
Cursor cursor = db.query(
    DataContract.ResultTable.TABLE_NAME,
    new String[]{DataContract.ResultTable.CALCULATED_VALUE},
    // 查询条件:获取最新的一条结果
    DataContract.ResultTable._ID + " = (SELECT MAX(" + DataContract.ResultTable._ID + ") FROM " + DataContract.ResultTable.TABLE_NAME + ")",
    null, null, null, null
);

if (cursor.moveToFirst()) {
    double result = cursor.getDouble(cursor.getColumnIndexOrThrow(DataContract.ResultTable.CALCULATED_VALUE));
    resultTextView.setText(String.valueOf(result));
}
cursor.close();
db.close();

内容的提问来源于stack exchange,提问作者Jefffy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:39:37