为什么 HashMap 方法 returns 空对象引用?
Why HashMap method returns null object reference?
我试图创建一个 HashMap
方法来获取 SQLite 数据库数据,但是当我调用该方法时,它 returns null
引用使我的 Android应用程序停止工作。
这是我的代码:
HashMap 方法:
public HashMap<String, String> getUserDetails(){
HashMap<String,String> user = new HashMap<String,String>();
String selectQuery = "SELECT * FROM " + TABLE_LOGIN;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
cursor.moveToFirst();
if(cursor.getCount() > 0){
user.put("name", cursor.getString(1));
user.put("position", cursor.getString(2));
user.put("level", cursor.getString(3));
user.put("email", cursor.getString(4));
user.put("uid", cursor.getString(5));
user.put("created_at", cursor.getString(6));
}
cursor.close();
db.close();
return user;
}
这就是我在其他 class
中调用方法的方式
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
HashMap<String,String> userDetail= db.getUserDetails();
int userLevel = Integer.parseInt(userDetail.get("level").toString());
无论如何,我使用教程参考来制作这个并与我自己的需要合并。
如果用户存在于数据库中,您应该 return user
对象,否则 return null
并检查 user
是否为 null
public HashMap<String, String> getUserDetails(){
HashMap<String,String> user = null;
String selectQuery = "SELECT * FROM " + TABLE_LOGIN;
try {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor != null){
cursor.moveToFirst();
if(cursor.getCount() > 0){
user = new HashMap<String,String>();
user.put("name", cursor.getString(1));
user.put("position", cursor.getString(2));
user.put("level", cursor.getString(3));
user.put("email", cursor.getString(4));
user.put("uid", cursor.getString(5));
user.put("created_at", cursor.getString(6));
}
}
} finally {
cursor.close();
db.close();
}
return user;
}
然后
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
HashMap<String,String> userDetail= db.getUserDetails();
if (userDetail != null) {
String level = userDetail.get("level");
if (level != null){
try {
int userLevel = Integer.parseInt(level);
} catch (Exception e){
e.printStackTrace();
}
}
}
我试图创建一个 HashMap
方法来获取 SQLite 数据库数据,但是当我调用该方法时,它 returns null
引用使我的 Android应用程序停止工作。
这是我的代码:
HashMap 方法:
public HashMap<String, String> getUserDetails(){
HashMap<String,String> user = new HashMap<String,String>();
String selectQuery = "SELECT * FROM " + TABLE_LOGIN;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
cursor.moveToFirst();
if(cursor.getCount() > 0){
user.put("name", cursor.getString(1));
user.put("position", cursor.getString(2));
user.put("level", cursor.getString(3));
user.put("email", cursor.getString(4));
user.put("uid", cursor.getString(5));
user.put("created_at", cursor.getString(6));
}
cursor.close();
db.close();
return user;
}
这就是我在其他 class
中调用方法的方式DatabaseHandler db = new DatabaseHandler(getApplicationContext());
HashMap<String,String> userDetail= db.getUserDetails();
int userLevel = Integer.parseInt(userDetail.get("level").toString());
无论如何,我使用教程参考来制作这个并与我自己的需要合并。
如果用户存在于数据库中,您应该 return user
对象,否则 return null
并检查 user
是否为 null
public HashMap<String, String> getUserDetails(){
HashMap<String,String> user = null;
String selectQuery = "SELECT * FROM " + TABLE_LOGIN;
try {
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
if (cursor != null){
cursor.moveToFirst();
if(cursor.getCount() > 0){
user = new HashMap<String,String>();
user.put("name", cursor.getString(1));
user.put("position", cursor.getString(2));
user.put("level", cursor.getString(3));
user.put("email", cursor.getString(4));
user.put("uid", cursor.getString(5));
user.put("created_at", cursor.getString(6));
}
}
} finally {
cursor.close();
db.close();
}
return user;
}
然后
DatabaseHandler db = new DatabaseHandler(getApplicationContext());
HashMap<String,String> userDetail= db.getUserDetails();
if (userDetail != null) {
String level = userDetail.get("level");
if (level != null){
try {
int userLevel = Integer.parseInt(level);
} catch (Exception e){
e.printStackTrace();
}
}
}