Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ResultSet.getInt()错误_Java_Mysql - Fatal编程技术网

Java ResultSet.getInt()错误

Java ResultSet.getInt()错误,java,mysql,Java,Mysql,所以我尝试使用java连接到数据库。。我写的函数getOutSymptoms有个问题 这是密码 package database_console; import java.sql.*; public class DBConnect { private Connection con; private Statement st; private ResultSet rs; public DBConnect(){ try { Class.forName("com.

所以我尝试使用java连接到数据库。。我写的函数getOutSymptoms有个问题

这是密码

package database_console;

import java.sql.*;

public class DBConnect {

private  Connection con;
private  Statement st;
private ResultSet rs;

public DBConnect(){

    try {
        Class.forName("com.mysql.jdbc.Driver");


            try {
                con = DriverManager.getConnection("jdbc:mysql://localhost:3306/users", "root", "admin");
                st = con.createStatement();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }




    } catch (ClassNotFoundException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

public int getOutSymptoms(int userID) throws SQLException{
String query = "SELECT `user`.`out_symptoms` FROM user WHERE (`user`.`id` =" + userID + ")";

rs = st.executeQuery(query);
int out_symptoms_value = rs.getInt("out_symptoms");
st.close();
return out_symptoms_value;

}
错误出现在
getOutSymptoms
函数的以下行:

int out_symptoms_value = rs.getInt("out_symptoms");
为什么呢?我怎样才能修好它


非常感谢。

您需要遍历结果集以获得返回的行。当您第一次获得新的结果集时,它没有指向任何特定的行(其指针设置为第一行之前的一行),您需要至少调用一次
rs.next()
方法才能获得实际结果

如果你知道只有一个结果,你可以这样做:

if (rs.next()) {
   int out_symptoms_value = rs.getInt("out_symptoms");
   //do other stuff
} else {
   //query returned no results
}
如果希望返回多行,则可以执行以下操作:

while(rs.next()) {
  int out_symptoms_value = rs.getInt("out_symptoms");
  //do the rest of processing
}

TLDR:至少需要调用一次
rs.next()
,才能获得实际结果。

要开始使用结果集,必须调用next()方法。虽然您没有说明确切的错误,但是您肯定会遇到这个问题,除非在调用getInt()之前添加它


您需要使用
rs.next()
迭代resultSet对象以获取值。resultSet不指向实际行,但当调用
rs.next()
时,它指向第一个结果

while(rs.next(){
 int d = rs.getInt("  ");
}

rs.next()
返回一个布尔值,如果没有返回任何内容,循环将不会执行&运行时不会出现异常。

您已经在连接字符串中传递了数据库名称,因此请更改此值

String query = "SELECT `user`.`out_symptoms` FROM user WHERE (`user`.`id` =" + userID + ")";

然后像这样迭代获得的结果集

while(rs.next()) {
  int out_symptoms_value = rs.getInt("out_symptoms");

}

此外,最好使用
PreparedStatement
而不是
Statement
哪个cna阻止sql注入

什么错误?说“错误”而不告诉我们它是编译时错误还是异常,或者结果是什么,就像去看医生,希望他们在不描述症状的情况下诊断出问题。正是这样。。谢谢你:)很乐意帮忙,不problem@user3818372欢迎:)
while(rs.next()) {
  int out_symptoms_value = rs.getInt("out_symptoms");

}