0

私はDBAdater.javaクラスでこのクエリを試しました:

 public Cursor getUserName(int userId) {

    Cursor c = db.query(REGISTER_TABLE, new String[] { REGISTER_ID,
            REGISTER_UN }, REGISTER_ID + " = " +userId,null,  null, null,
            null, null);
    if (c != null) {
        c.moveToFirst();
    }
    return c;
}

または

public Cursor get_user(int id) {
    return db.query(REGISTER_TABLE,
            new String[] { REGISTER_ID, REGISTER_UN }, REGISTER_ID + "="

            + "'" + id + "'", null, null, null, null, null);
}

Test.java ユーザー名の取得

Cursor clogin = db.getUserName(userId);
Log.i("user name  with repect to user id ", ""+clogin.getString(clogin.getColumnIndex(DBAdapter.RID)));

これを実行すると、次のエラーが発生します。

04-30 14:18:52.925: E/AndroidRuntime(639): FATAL EXCEPTION: main
04-30 14:18:52.925: E/AndroidRuntime(639): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.android.linkplus/com.android.Hello.test.test}: java.lang.NullPointerException
04-30 14:18:52.925: E/AndroidRuntime(639):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
......
......
04-30 14:18:52.925: E/AndroidRuntime(639): Caused by: java.lang.NullPointerException
04-30 14:18:52.925: E/AndroidRuntime(639):  at com.android.Hello.test.Profiles.getUserName(Profiles.java:63)
04-30 14:18:52.925: E/AndroidRuntime(639):  at com.android.Hello.test.Profiles.onCreate(Profiles.java:51)
04-30 14:18:52.925: E/AndroidRuntime(639):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

このコードのエラーを指摘してください。前もって感謝します。

4

4 に答える 4

1

次のようにクエリを変更してみてください

Cursor c = db.query(REGISTER_TABLE, new String[] { REGISTER_ID,
            REGISTER_UN }, REGISTER_ID + "=?", new String[]{userId},  null, null,
            null, null);

また、text.javaで null カーソルをチェックします。

Cursor clogin = db.getUserName(userId);
if(clogin != null) {
Log.i("user name  with repect to user id ", ""+clogin.getString(clogin.getColumnIndex(DBAdapter.RID)));

}
于 2012-05-01T06:16:23.473 に答える
0

その代わりに、このメソッドを使用できます

Cursor c = db.rawQuery("Your Query without semicolon", selectionargs);

あなたの場合

Cursor c = db.rawQuery("select REGISTER_ID,REGISTER_UN from REGISTER_TABLE where REGISTER_ID="+userId,null);
于 2012-05-01T06:30:33.333 に答える
0

明らかに、クエリは値を返していません。データベースにエラーがあるか、おそらくクエリ文字列にエラーがあるはずです。

于 2012-04-30T08:50:28.837 に答える
0

これを試してみてください

 Cursor c = db.query(REGISTER_TABLE, 
                     new String[] { REGISTER_ID, REGISTER_UN }, 
                     REGISTER_ID + " = " +userId, 
                     null,
                     null, 
                     null, 
                     null);
于 2012-05-01T09:12:24.550 に答える