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

Android Studio中SQLite结合if语句设置TextView失效问题排查

问题修复方案

核心问题分析

  • DBHelper常量定义错误:重复覆盖AAAA和AAAA1常量,导致表名、字段名逻辑混乱
  • input.java语法错误:数据库插入语句写在OnClickListener代码块外,无法触发执行
  • settext.java逻辑错误:直接比较DBHelper的静态字段名(而非数据库存储的实际值),且未初始化TextView实例

修复后的代码

1. DBHelper.java(修正常量定义+新增查询方法)

public class DBHelper extends SQLiteOpenHelper {
    private static final String DB_NAME = "String.db";
    private static final int DB_VERSION = 3;

    public static final String TABLE_Value = "TABLE_Value";
    public static final String AAAA = "AAAA";
    public static final String AAAA1 = "AAAA1";
    // 修正重复定义问题,改为正确的BBBB/BBBB1常量
    public static final String BBBB = "BBBB";
    public static final String BBBB1 = "BBBB1";

    public DBHelper(Context context) {
        super(context, DB_NAME, null, DB_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTableQueryAA = "CREATE TABLE " + AAAA + " (" +
                AAAA1 + " TEXT)";
        db.execSQL(createTableQueryAA);

        String createTableQueryBB = "CREATE TABLE " + BBBB + " (" +
                BBBB1 + " TEXT)";
        db.execSQL(createTableQueryBB);
    }

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

    // 新增查询方法,直接获取数据库中存储的字段值
    public String getAAAAValue() {
        SQLiteDatabase db = getReadableDatabase();
        String value = "";
        Cursor cursor = db.query(AAAA, new String[]{AAAA1}, null, null, null, null, null);
        if (cursor.moveToFirst()) {
            value = cursor.getString(cursor.getColumnIndexOrThrow(AAAA1));
        }
        cursor.close();
        db.close();
        return value;
    }

    public String getBBBBValue() {
        SQLiteDatabase db = getReadableDatabase();
        String value = "";
        Cursor cursor = db.query(BBBB, new String[]{BBBB1}, null, null, null, null, null);
        if (cursor.moveToFirst()) {
            value = cursor.getString(cursor.getColumnIndexOrThrow(BBBB1));
        }
        cursor.close();
        db.close();
        return value;
    }
}

2. input.java(修正语法错误+完善数据库操作)

// 假设dbHelper已完成初始化
Btn_aaaa.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        db.delete(DBHelper.AAAA, null, null);
        values.put(DBHelper.AAAA1, "test111");
        // 将insert语句移至代码块内,确保点击时执行插入
        db.insert(DBHelper.AAAA, null, values);
        db.close(); // 关闭数据库连接
    }
});

Btn_bbbb.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        SQLiteDatabase db = dbHelper.getWritableDatabase();
        ContentValues values = new ContentValues();
        db.delete(DBHelper.BBBB, null, null);
        values.put(DBHelper.BBBB1, "test222");
        db.insert(DBHelper.BBBB, null, values);
        db.close();
    }
});

3. settext.java(修正TextView初始化+数据库查询逻辑)

import static com.example.test1.DBHelper.AAAA1;
import static com.example.test1.DBHelper.BBBB1;

public class settext extends AppCompatActivity {
    TextView Text_test;
    TextView Text_test2;
    private DBHelper dbHelper;

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

        // 初始化TextView实例,绑定布局ID
        Text_test = findViewById(R.id.Text_test);
        Text_test2 = findViewById(R.id.Text_test2);

        dbHelper = new DBHelper(this);

        // 从数据库查询实际存储的值
        String aaaaValue = dbHelper.getAAAAValue();
        String bbbbValue = dbHelper.getBBBBValue();

        // 条件判断并设置文本
        if ("test111".equals(aaaaValue)) {
            Text_test.setText("test111");
        }
        if ("test222".equals(bbbbValue)) {
            Text_test2.setText("test222");
        }
    }
}

关键修复说明

  1. DBHelper:修复常量重复定义问题,新增封装好的查询方法,避免直接编写底层SQL
  2. input.java:将插入语句移至点击事件代码块内,确保按钮点击时能正确执行数据插入,同时添加数据库连接关闭逻辑
  3. settext.java:先初始化TextView实例,再通过DBHelper获取数据库中的实际存储值,最后基于真实值进行条件判断设置文本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 04:47:32