1
AndroidのSQLクエリに少し問題があります。 DatabaseHelperクラスでAndroid Sql NullPointerException
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;
}
:Communicatorのクラスで
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);
:ここ
は私のコードです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;
}
そして、それはで私throwinのNullPointerExceptionです:
result.get(dbHelper.executeSQLQuery(query));
私はそれをどのように修正できますか?
これらのステートメントが異なる行にあり、NPEがどこから来ているのかを正確に示すのに役立ちますか。それは 'result'がすぐ上の新しい' HashMap'に割り当てられるので 'dbHelper'でなければなりません。だから 'dbHelper'は' null'です。あなたの 'dbHelper'作成コードがNPEの前に実行されているかどうか調べ、何かが' dbHelper'を直接的または間接的にヌルに設定しているかどうかを調べます。また、 'result.get(dbHelper.executeSQLQuery(query))'は、 'Map'が空になり、' Map.get'を使用しても何も達成できない。 –
どのようにdbHelper.executeSQLQuery(クエリー)の結果をMap、ArrayListなどに入れても問題ありませんか? –
この回答を見る - http://stackoverflow.com/questions/2567594/cursor-while-loop-returning-every-value-but-the-last - クエリの結果を反復処理する方法。あなたが必要とする行からアイテムを取り出し、 'ArrayList'などに入れてください。 –