问候溢出社区。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