0

我有以下代码:

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;
                }

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

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

我的数据库有价值。我还测试了连接。

代码也成功连接到数据库。

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

以下是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)
4

2 回答 2

3

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

if (resultSet.next()) {
   int value=resultSet.getInt(1);
   ...
}
于 2013-09-11T08:59:08.617 回答
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(); }
}
于 2013-09-11T09:04:02.590 回答