問候溢出社區。Android - 從SQL數據庫獲取信息時出現問題
我還是Android開發的新手,所以請耐心等待。 對不起,如果這已經在另一個線程。我找不到任何相關的東西。
通過遵循過去2周的大量教程,我一直在嘗試創建一個應用程序,該應用程序使用下面的4個表格在數據庫上註冊報告。用戶表
2 - - 項目表
3 - 1型項目表
4 - 2型項目表
我的問題是他們的應用程序
1中創建在登錄屏幕中。我試圖在用戶表中搜索我的用戶名/密碼字段以確認用戶訪問。
如果我在表格中找到了我的用戶名/密碼條目,它將在項目表上搜索該用戶已創建的所有項目,並將其返回到下一個活動的列表中。點擊登錄按鈕時,應用程序會在一段時間後凍結並崩潰。你們可以借我一隻手來了解它正在發生什麼嗎?
我的logcat顯示的唯一情況是我有一些SQLiteConnections泄漏,我不知道如何解決......我的數據庫類有點大,所以如果你們需要發佈任何東西以便了解問題,我會稍後發佈。
什麼是gservices.db和networkstatistics.sqlite?
09-26 14:32:40.266 2022-2035/com.google.process.gapps W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/user/0/com.google.android.gsf/databases/gservices.db' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
09-26 14:33:05.120 2210-2222/com.google.android.gms W/SQLiteConnectionPool: A SQLiteConnection object for database '/data/data/com.google.android.gms/databases/networkstatistics.sqlite' was leaked! Please fix your application to end transactions in progress properly and to close the database when it is no longer needed.
沒有響應的應用程序的方法如下:
public boolean search_access(user user){
String [] tabela_user = new String[]{"username","password"};
String compare_user = "COLUMN_USER_USERNAME = ?";
String [] whereargs = new String[]{user.getUsername()}
Cursor cursor = db.query(TABLE_USER, tabela_user, compare_user, null, null, null, null);
if(cursor.moveToFirst()) {
if(cursor.getString(0).equals(user.getPassword())) {
MainActivity.acesso = true;
} else{
CharSequence text = "Incorrect Username/Password!!";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(null, text, duration);
toast.show();
MainActivity.acesso = false;
}
}
return MainActivity.acesso;
}
這提供了以下錯誤:
java.lang.NullPointerException: Attempt to invoke virtual method 'android.database.Cursor android.database.sqlite.SQLiteDatabase.query(java.lang.String, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String, java.lang.String, java.lang.String)' on a null object reference
at com.example.relatoriodeobras.projeto_db.busca_acesso(projeto_db.java:177)(which is the cursor line)
提前感謝!
您應該將數據庫訪問移至新線程。 CursorLoader可以爲此提供幫助。 –
'usuario.getUsername()== username_login' <=它是什麼?這不是我們如何比較java中的字符串...爲什麼你不問db給定的名稱和密碼的用戶數,而是迭代整個表並比較? *應用程序在一段時間後凍結並崩潰* <= prolly ANR – Selvin
好的@代碼學徒,我會嘗試它並尋找CursorLoader。謝謝! – HextechEnthusiast