[英]Android SQLite data fetching
每次我從我的 SQLite 運行“select *”查詢時,應用程序都會停止。 我推斷它每次都調用數據庫助手,但我不知道如何修復它。
主活動.java
public class MainActivity extends AppCompatActivity {
DatabaseHelper databaseHelper;
@Override
protected void onCreate(Bundle savedInstanceState) {
getWindow().setStatusBarColor(Color.WHITE);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
displayUsers();
}
public void displayUsers() {
Cursor cursor = databaseHelper.getAllUsers(); //here's where the error keeps on happening
if(cursor.getCount() == 0) {
Toast.makeText(this, "none", Toast.LENGTH_SHORT).show();
}
}
}
數據庫助手
public class DatabaseHelper extends SQLiteOpenHelper {
public static final String DATABASE_NAME = "reminders.db";
public static final String T_1 = "tbl_users";
public static final String T1_COL_1 = "ID";
public static final String T1_COL_2 = "FIRST_NAME";
public static final String T1_COL_3 = "MIDDLE_INITIAL";
public static final String T1_COL_4 = "LAST_NAME";
public static final String T1_COL_5 = "PHONE";
public static final String T1_COL_6 = "EMAIL";
public static final String T1_COL_7 = "USERNAME";
public static final String T1_COL_8 = "PASSWORD";
public DatabaseHelper(@Nullable Context context) {
super(context, DATABASE_NAME, null, 1);
SQLiteDatabase database = this.getWritableDatabase();
}
...//other functions
public Cursor getAllUsers() {
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery("select * from " + T_1, null);
return cursor;
}
}
在返回游標之前關閉您的數據庫
public Cursor getAllUsers() {
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery("select * from " + T_1, null);
database.close(); // Added
return cursor;
}
您的 DatabaseHelper 類不會創建任何對象,因為您沒有調用 new DatabaseHelper (this)。 這就是 databasehelper 返回 null 的原因。 您可以在 onCreate 方法中嘗試這些行,databaseHelper= new DatabaseHelper(this);
在下面的函數中,首先你必須初始化數據庫以獲得 DatabaseHelper 類中的 WritableDatabase。
public void displayUsers() {
databaseHelper = DatabaseHelper(MainActivity.this)
Cursor cursor = databaseHelper.getAllUsers();
if(cursor.getCount() == 0) {
Toast.makeText(this, "none", Toast.LENGTH_SHORT).show();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.