我在结果集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();
答案 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
而不是INSERT
,UPDATE
或DELETE
操作。
答案 5 :(得分:0)
我相信人们已经回答了您的问题,statement.executeUpdate(query)
会返回执行query
影响了多少行的数量,您应该使用statement.executeQuery(query)
代替...
但是此部分String query = "SELECT * FROM patient WHERE Mobile_No = '" + mobno + "';"
是非常糟糕的方法,它将为SQL injection
打开大门,您应该使用PreparedStatement
代替Statement