记录集没有返回任何值

时间:2013-09-11 08:56:10

标签: java android

我有以下代码:

try {


                    String sql="select username from UserMaster";
                    statement = conn.createStatement();
                    resultSet = statement.executeQuery(sql);


                    int value=resultSet.getInt(1);


                    if (value > 0) {
                        recFound = 1;
                    } else {
                        recFound = 0;
                    }
                    if (recFound > 0) {
                        return true;
                    } else {
                        return false;
                    }
                }
                catch (Exception e) 
                {
                    e.printStackTrace();
                    return false;
                }

此代码用于检查用户是否存在。

但是因为记录集不包含任何值而得到错误。

我的数据库有一个值。我也测试了连接。

Code也成功连接到Databse。

但不明白为什么它没有从表中获取值。

以下是logcat:

09-11 13:39:30.126: W/KeyCharacterMap(1625): No keyboard for id 0
09-11 13:39:30.126: W/KeyCharacterMap(1625): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
09-11 13:39:38.967: W/System.err(1625): java.sql.SQLException: No current row in the ResultSet.
09-11 13:39:38.967: W/System.err(1625):     at net.sourceforge.jtds.jdbc.JtdsResultSet.getColumn(JtdsResultSet.java:270)
09-11 13:39:38.967: W/System.err(1625):     at net.sourceforge.jtds.jdbc.JtdsResultSet.getInt(JtdsResultSet.java:641)
09-11 13:39:38.976: W/System.err(1625):     at com.example.messagesql.gaSQLConnect.CheckUser(gaSQLConnect.java:69)
09-11 13:39:38.976: W/System.err(1625):     at com.example.messagesql.Login$1.onClick(Login.java:38)
09-11 13:39:38.976: W/System.err(1625):     at android.view.View.performClick(View.java:2485)
09-11 13:39:38.976: W/System.err(1625):     at android.view.View$PerformClick.run(View.java:9080)
09-11 13:39:38.986: W/System.err(1625):     at android.os.Handler.handleCallback(Handler.java:587)
09-11 13:39:38.986: W/System.err(1625):     at android.os.Handler.dispatchMessage(Handler.java:92)
09-11 13:39:38.986: W/System.err(1625):     at android.os.Looper.loop(Looper.java:123)
09-11 13:39:38.986: W/System.err(1625):     at android.app.ActivityThread.main(ActivityThread.java:3683)
09-11 13:39:38.986: W/System.err(1625):     at java.lang.reflect.Method.invokeNative(Native Method)
09-11 13:39:38.986: W/System.err(1625):     at java.lang.reflect.Method.invoke(Method.java:507)
09-11 13:39:38.986: W/System.err(1625):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
09-11 13:39:38.986: W/System.err(1625):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
09-11 13:39:38.986: W/System.err(1625):     at dalvik.system.NativeStart.main(Native Method)

2 个答案:

答案 0 :(得分:3)

在尝试调用getter方法之前将光标移动到记录集

if (resultSet.next()) {
   int value=resultSet.getInt(1);
   ...
}

答案 1 :(得分:2)

您还可以查看:

try {
    String sql="select username from UserMaster";
    statement = conn.createStatement();
    resultSet = statement.executeQuery(sql);
    while (resultSet .next()) {
        int value=resultSet.getInt(1);
    }
} catch (SQLException e ) {
    JDBCTutorialUtilities.printSQLException(e);
} finally {
    if (statement  != null) { statement .close(); }
}