Java 如何从sqlite DB中的表中获取特定的字符串结果?

Java 如何从sqlite DB中的表中获取特定的字符串结果?,java,android,sqlite,Java,Android,Sqlite,我有一个表,其中包含用户的详细信息。该表的架构如下所示: user (id,fname,lname,email,password); 02-20 15:04:39.341: E/AndroidRuntime(1521): FATAL EXCEPTION: main 02-20 15:04:39.341: E/AndroidRuntime(1521): android.database.CursorIndexOutOfBoundsException: Index -1 r

我有一个表,其中包含用户的详细信息。该表的架构如下所示:

user (id,fname,lname,email,password);
02-20 15:04:39.341: E/AndroidRuntime(1521): FATAL EXCEPTION: main
02-20 15:04:39.341: E/AndroidRuntime(1521):            android.database.CursorIndexOutOfBoundsException: 
Index -1 requested, with a size of 2
02-20 15:04:39.341: E/AndroidRuntime(1521):     at    android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
02-20 15:04:39.341: E/AndroidRuntime(1521):     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
02-20 15:04:39.341: E/AndroidRuntime(1521):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
02-20 15:04:39.341: E/AndroidRuntime(1521):     at   org.example.cinema.MovieDB.getPass(MovieDB.java:440)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at org.example.cinema.MainActivity.authUser(MainActivity.java:52)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at org.example.cinema.MainActivity$1.onClick(MainActivity.java:34)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.view.View.performClick(View.java:4240)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.view.View$PerformClick.run(View.java:17721)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.os.Handler.handleCallback(Handler.java:730)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.os.Handler.dispatchMessage(Handler.java:92)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.os.Looper.loop(Looper.java:137)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.app.ActivityThread.main(ActivityThread.java:5103)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at java.lang.reflect.Method.invokeNative(Native Method)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at java.lang.reflect.Method.invoke(Method.java:525)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at dalvik.system.NativeStart.main(Native Method)
我想通过电子邮件获取特定用户的密码。我尝试了下面的代码,但没有成功

Check user=new Check(false);
String  searchQuery= " SELECT * FROM " + TABLE_USER + " WHERE " +
        KEY_EMAIL   + " LIKE   '" + uemail+ "'";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(searchQuery, null);
if (cursor!=null)
{
    user.setExist(true);
    cursor.moveToFirst();
    searchQuery= " SELECT " +  KEY_PASSWORD + " FROM "  +  
            TABLE_USER + " WHERE " +   KEY_EMAIL + " LIKE '" + uemail+ "'";
    cursor = db.rawQuery(searchQuery, null);
line
    user.setPassword(cursor.getString((cursor.getColumnIndex(KEY_PASSWORD))));
    return user;
}
else
{
    return user;
}
但我得到一个运行时错误,日志猫如下所示:

user (id,fname,lname,email,password);
02-20 15:04:39.341: E/AndroidRuntime(1521): FATAL EXCEPTION: main
02-20 15:04:39.341: E/AndroidRuntime(1521):            android.database.CursorIndexOutOfBoundsException: 
Index -1 requested, with a size of 2
02-20 15:04:39.341: E/AndroidRuntime(1521):     at    android.database.AbstractCursor.checkPosition(AbstractCursor.java:424)
02-20 15:04:39.341: E/AndroidRuntime(1521):     at android.database.AbstractWindowedCursor.checkPosition(AbstractWindowedCursor.java:136)
02-20 15:04:39.341: E/AndroidRuntime(1521):     at android.database.AbstractWindowedCursor.getString(AbstractWindowedCursor.java:50)
02-20 15:04:39.341: E/AndroidRuntime(1521):     at   org.example.cinema.MovieDB.getPass(MovieDB.java:440)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at org.example.cinema.MainActivity.authUser(MainActivity.java:52)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at org.example.cinema.MainActivity$1.onClick(MainActivity.java:34)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.view.View.performClick(View.java:4240)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.view.View$PerformClick.run(View.java:17721)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.os.Handler.handleCallback(Handler.java:730)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.os.Handler.dispatchMessage(Handler.java:92)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.os.Looper.loop(Looper.java:137)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at android.app.ActivityThread.main(ActivityThread.java:5103)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at java.lang.reflect.Method.invokeNative(Native Method)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at java.lang.reflect.Method.invoke(Method.java:525)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
 02-20 15:04:39.341: E/AndroidRuntime(1521):    at dalvik.system.NativeStart.main(Native Method)

我认为,您需要编写
cursor.moveToFirst()再次在下行之后

cursor = db.rawQuery(searchQuery, null);
更新代码

Check user=new Check(false);
String  searchQuery= " SELECT * FROM " + TABLE_USER + " WHERE " +
        KEY_EMAIL   + " LIKE   '" + uemail+ "'";
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(searchQuery, null);
if (cursor!=null)
{
    user.setExist(true);
    cursor.moveToFirst();
    searchQuery= " SELECT " +  KEY_PASSWORD + " FROM "  +  
            TABLE_USER + " WHERE " +   KEY_EMAIL + " LIKE '" + uemail+ "'";
    cursor = db.rawQuery(searchQuery, null);
    cursor.moveToFirst();                                    // Add this line
    user.setPassword(cursor.getString((cursor.getColumnIndex(KEY_PASSWORD))));
    return user;
}
else
{
    return user;
}
遵循这个例子

public String getQty(String A , String B, String C)
    {
        Cursor cursor = database.query(TABLE_NAME,
                null,
                Coloum_Name1 + "='"+ A + "' AND " + Coloum_Name2 + "='" + B +"' AND " + Coloum_Name3 + "='" + C +"'",
                null, null, null, null);

        cursor.moveToFirst();

        String D = cursor.getString(cursor.getColumnIndex(Coloum_Name1/2/3));

        return D ;
    }

@afom,当我的回答解决了你的问题时,你为什么不接受我的回答?