【问题标题】:How to read data from SQLiteOpenHelper to textview?如何从 SQLiteOpenHelper 读取数据到 textview?
【发布时间】:2021-10-22 16:35:28
【问题描述】:

我想从 SQL 数据库设置 Textview,但是当我启动这个活动时应用程序崩溃了。问题出在哪里?

DatabaseHelper.java

Cursor readAllData(){
    String query = "SELECT * FROM " + TABLE_NAME;
    SQLiteDatabase db = this.getReadableDatabase();

    Cursor cursor = null;
    if(db != null){
        cursor = db.rawQuery(query, null);
    }
    return cursor;
}

MainActivity.java

myDB = new DatabaseHelper(MainActivity2.this);
Cursor cursor = myDB.readAllData();
btn.setText(cursor.getString(5));

【问题讨论】:

    标签: java android sql sqlite


    【解决方案1】:

    您应该提供堆栈跟踪以更好地了解崩溃。但是,您可能会因为您从 UI 线程查询数据库而发生崩溃,此时您应该在单独且安全的线程中查询它。

    这是一个示例,使用您提供的代码:

    
    public class YourActivity extends AppCompactActivity{
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.your_activity);
    
            Button btn = (Button) findViewById(R.id.yourButtonId);
    
            new Thread(() -> {
                SQLiteDatabase myDB = new DatabaseHelper(YourActivity.this);
                Cursor cursor = myDB.readAllData();
                String textToShow = cursor.getString(5);
                
                //Now that you've done all the work needed, you can go to the UiThread
                runOnUiThread(() -> {
                    btn.setText(textToShow);
                }
            }
    
    
    
    }
    
    
    

    【讨论】:

      猜你喜欢
      • 2022-11-28
      • 2013-08-16
      • 2019-12-01
      • 2016-06-29
      • 1970-01-01
      • 1970-01-01
      • 2021-11-22
      • 2019-08-23
      • 1970-01-01
      相关资源
      最近更新 更多