Счетчик возврата из базы данных для setText вызывает сбой приложения - PullRequest
0 голосов
/ 07 мая 2020

У меня в базе 3 строки пользователей. Я хочу нажать кнопку, и она показывает количество пользователей в таблице user_admin.

Это setText.

public class CountActivity extends AppCompatActivity {
DatabaseHelper db;
Button b1;
TextView t1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_count);

    db = new DatabaseHelper(this);
    b1 = findViewById(R.id.countButton);
    t1 = findViewById(R.id.countAnswer);

    b1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            t1.setText(Integer.toString(db.getIds()));
        }
    });

}
}

Вот база данных. Вместе с функцией

public class DatabaseHelper extends SQLiteOpenHelper {

private static final String DB_NAME= "sqllitetest";
private static final int DB_VERSION = 2;

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

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase) {
    String sqlUsers = "CREATE TABLE user_admin(id INTEGER PRIMARY KEY AUTOINCREMENT, user_name VARCHAR, user_password VARCHAR);";
    sqLiteDatabase.execSQL(sqlUsers);
}

public int getIds()
{
    String selectQuery = "SELECT id FROM user_admin";
    SQLiteDatabase database = this.getReadableDatabase();
    Cursor c = database.rawQuery(selectQuery, null);
    c.moveToFirst();
    int total = c.getCount();
    c.close();
    return total;
}
@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) {
    String sqlUsers = "DROP TABLE IF EXISTS user_admin";
    sqLiteDatabase.execSQL(sqlUsers);
    onCreate(sqLiteDatabase);
}
}

Вот xml.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">


<Button
    android:id="@+id/countButton"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="Button" />

<TextView
    android:id="@+id/countAnswer"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textSize="36sp" />
</LinearLayout>

Когда я нажимаю на кнопку, происходит сбой. Я новичок в SQLite, поэтому хотел бы знать, что вызывает это, и возможное решение.

...