簡體   English   中英

Android SQLite 數據獲取

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM