1
我有一個Android SQL查詢的小問題。Android Sql空指針異常
這裏是我的代碼:
Communicator rpc;
dbHelper = new DataBaseHelper(context, "oops_sys_tpl.sqlite", null, 1);
dbHelper.getDatabase();
dbHelper.executeQuery("users", "id", "75");
dbHelper.executeQuery("users", "objectId", "2");
dbHelper.executeQuery("users","serverName","ooops.com");
dbHelper.executeQuery("users", "username", "muphet");
newServerName = "stampii.com";
Log.w("UserId","Show user Id : "+userId);
int uuId = rpc.localUserIdByServerUserId(userId,newServerName);
Log.w("uuId","uuId : "+uuId);
在通訊類:
public static int localUserIdByServerUserId(int serverUserId){
String query = "SELECT id FROM users WHERE objectId = "+serverUserId+" LIMIT 1";
Map<String,Object> result = new HashMap<String,Object>();
result.get(dbHelper.executeSQLQuery(query));
int uuid = Integer.parseInt(result.get(0).toString());
return uuid;
}
public static int localUserIdByServerUserId(int serverUserId, String serverName){
String query = "SELECT id FROM users WHERE objectId = "+serverUserId+" AND serverName = "+serverName+" LIMIT 1";
Map<String,Object> result = new HashMap<String,Object>();
result.get(dbHelper.executeSQLQuery(query));
int uuid = Integer.parseInt(result.get(0).toString());
Log.w("localUSerByIdServerUserId","LocalUserByIdServerUserId result : "+uuid);
return uuid;
}
在DatabaseHelper類:
SQLIteDatabase sqliteDb;
public boolean executeQuery(String tableName,String keys,String value){
return execQuery(tableName,keys,value);
}
private static boolean execQuery(String tableName,String key,String value){
sqliteDb = instance.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(key, value);
sqliteDb.insert(tableName, null, values);
return true;
}
而且它的肆意我一個NullPointerException在:
result.get(dbHelper.executeSQLQuery(query));
如何解決這個問題?
如果這些陳述是在不同的行上,以顯示NPE來自哪裏,會幫助你。事實上,它必須是'dbHelper',因爲'result'被分配到上面剛剛創建的一個新的'HashMap'。所以'dbHelper'是'null'。找出你的'dbHelper'創建代碼是否在NPE之前被執行,並確定是否有任何東西直接或間接地將'dbHelper'設置爲null。另外,我不知道'result.get(dbHelper.executeSQLQuery(query))'是爲了達到什麼效果,因爲'Map'將是空的,所以'Map.get'的使用不會達到任何效果。 –
那麼我怎麼能把結果的dbHelper.executeSQLQuery(查詢)在一個地圖,ArrayList或任何工作? –
看到這個答案 - http://stackoverflow.com/questions/2567594/cursor-while-loop-returning-every-value-but-the-last - 如何遍歷查詢的結果。從你需要的行中取出這些項目,並將它們放入'ArrayList'或類似的項目中。 –