你能帮我在ResultSet rs = stmt ....中找到下面的错误吗?

时间:2018-02-06 14:56:35

标签: java jdbc

我在结果集rs部分出现错误,其中netbeans将错误显示为

  

不兼容的类型:int无法转换为结果集

Class.forName("java.sql.Driver");

Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql?useSSL=false", "root", "abc");

Statement stmt = conn.createStatement();
String query = "SELECT * FROM patient WHERE Mobile_No='" + mobno + "';"; /*Get the value from the database*/
ResultSet rs = stmt.executeUpdate(query);/*Part where the error is appearing*/

while (rs.next()) {
    String Name = rs.getString("Name");
    String Age = rs.getString("Age");
    String Mobile = rs.getString("Mobile_No");
    String gender = rs.getString("Gender");
    String symptoms = rs.getString("Symptoms");
    model.addRow(new Object[]{Name, Age, Mobile, gender, symptoms});
}

rs.close();
stmt.close();
conn.close();

6 个答案:

答案 0 :(得分:1)

使用stmt.executeQuery(String sql),它会返回ResultSet

答案 1 :(得分:1)

如果要返回ResultSet,则应使用executeQuery,而不是executeUpdate。

答案 2 :(得分:0)

stmt.executeUpdate(query);不适合SELECT查询。

您需要将其替换为stmt.executeQuery(query);

答案 3 :(得分:0)

方法executeUpdate返回一个int而不是结果集,如下面的文档中所示:https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeUpdate(java.lang.String) 返回的整数是(1) the row count for SQL Data Manipulation Language (DML) statements or (2) 0 for SQL statements that return nothing

您实际想要使用的方法是executeQuery,其文档可以在以下位置找到: https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html#executeQuery(java.lang.String)

答案 4 :(得分:0)

根据Javadoc(https://docs.oracle.com/javase/9/docs/api/java/sql/Statement.html#executeUpdate-java.lang.String-),stmt.executeUpdate(query);会返回int而不是ResultSet个对象。

来自Javadoc:

  

<强>返回:
  (1)SQL数据操作语言(DML)语句的行计数或(2)0表示不返回任何内容的SQL语句

我认为您必须使用stmt.executeQuery(query);代替,这会返回您期望的ResultSet。您正在执行SELECT而不是INSERTUPDATEDELETE操作。

答案 5 :(得分:0)

我相信人们已经回答了您的问题,statement.executeUpdate(query)会返回执行query影响了多少行的数量,您应该使用statement.executeQuery(query)代替...

但是此部分String query = "SELECT * FROM patient WHERE Mobile_No = '" + mobno + "';"是非常糟糕的方法,它将为SQL injection打开大门,您应该使用PreparedStatement代替Statement