2011-09-16 13 views
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)); 

私はそれをどのように修正できますか?

+0

これらのステートメントが異なる行にあり、NPEがどこから来ているのかを正確に示すのに役立ちますか。それは 'result'がすぐ上の新しい' HashMap'に割り当てられるので 'dbHelper'でなければなりません。だから 'dbHelper'は' null'です。あなたの 'dbHelper'作成コードがNPEの前に実行されているかどうか調べ、何かが' dbHelper'を直接的または間接的にヌルに設定しているかどうかを調べます。また、 'result.get(dbHelper.executeSQLQuery(query))'は、 'Map'が空になり、' Map.get'を使用しても何も達成できない。 –

+0

どのようにdbHelper.executeSQLQuery(クエリー)の結果をMap、ArrayListなどに入れても問題ありませんか? –

+0

この回答を見る - http://stackoverflow.com/questions/2567594/cursor-while-loop-returning-every-value-but-the-last - クエリの結果を反復処理する方法。あなたが必要とする行からアイテムを取り出し、 'ArrayList'などに入れてください。 –

答えて

0

この行で呼び出す方法:result.get(dbHelper.executeSQLQuery(query));とここに表示されている方法は異なるので、問題はもう1つです。確認して答えを見つけるか貼り付けますここで私たちはあなたを助けることができます。

関連する問題