错误 ResultSet 不能是 int
Error ResultSet can not be int
我一直在尝试做一个方法,可以接收一个 SQL 句子并用两个 类 做一个 'ExecuteUpdate' 但是当我声明 'ResultSet res = stat.executeUpdate(SQL sentece)' Netbeans 说我这个错误:'Int cannot be convert to ResultSet',但我不知道为什么。这是两个 类:
Class 连接
package controller;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.ResultSet;
public class conexion{
Connection con = null;
Statement stat = null;
//Method to star the connection
conexion(){
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","n0m3l0");
}
catch(ClassNotFoundException | SQLException x){
System.out.println(x);
}
}
//Method to end the Connection
void endConexion(){
if(con == null || stat == null){
try{
stat.close();
con.close();
}
catch(SQLException x){
Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, x);
}
}
else {
System.out.println("Connection is already finished");
}
}
//Methods Set and Get for Stat and Con
void setStat(Statement x){
this.stat = x;
}
void setCon(Connection x){
this.con = x;
}
Statement getStat(){
return this.stat;
}
Connection getCon(){
return this.con;
}
}
Class 查询
package controller;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Querys {
//Call class conexion
private conexion mycon = new conexion();
//Method to execute onlye inserts querys
void insertQuerys(String sql){
try{
mycon.setStat(mycon.getCon().createStatement());
mycon.getStat().executeUpdate(sql);
}
catch(Exception x){
System.out.println(x);
}
}
//MEthod to execute query that return results
ResultSet queryResponse(String sql) throws SQLException{
mycon.setCon(null);
mycon.setStat(null);
****This is the line where is the error*****
ResultSet res = mycon.getStat().executeUpdate(sql);
while(res.next()){
return res;
}
}
}
嗯,因为 executeUpdate()
returns 更新或删除的实体数,而且确实是 int
值。
因为 executeUpdate 方法 returns int
。这个 int
值显示有多少行受到您的 sql 语句的影响。
例如删除/更新/插入了多少行。
它 return 0
当您的语句不影响任何行时。
会是
int rowsUpdated = mycon.getStat().executeUpdate(sql);
你实际上是在执行更新语句,它只会影响 return 行,而不是 ResultSet
如果您想维护结果集,您可以使用
ResultSet rs = mycon.getStat().executeQuery("SELECT a, b FROM TABLE2");
或改为整数
int rowsUpdated = mycon.getStat().executeUpdate(sql);
我一直在尝试做一个方法,可以接收一个 SQL 句子并用两个 类 做一个 'ExecuteUpdate' 但是当我声明 'ResultSet res = stat.executeUpdate(SQL sentece)' Netbeans 说我这个错误:'Int cannot be convert to ResultSet',但我不知道为什么。这是两个 类:
Class 连接
package controller;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.sql.ResultSet;
public class conexion{
Connection con = null;
Statement stat = null;
//Method to star the connection
conexion(){
try{
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb","root","n0m3l0");
}
catch(ClassNotFoundException | SQLException x){
System.out.println(x);
}
}
//Method to end the Connection
void endConexion(){
if(con == null || stat == null){
try{
stat.close();
con.close();
}
catch(SQLException x){
Logger.getLogger(conexion.class.getName()).log(Level.SEVERE, null, x);
}
}
else {
System.out.println("Connection is already finished");
}
}
//Methods Set and Get for Stat and Con
void setStat(Statement x){
this.stat = x;
}
void setCon(Connection x){
this.con = x;
}
Statement getStat(){
return this.stat;
}
Connection getCon(){
return this.con;
}
}
Class 查询
package controller;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Querys {
//Call class conexion
private conexion mycon = new conexion();
//Method to execute onlye inserts querys
void insertQuerys(String sql){
try{
mycon.setStat(mycon.getCon().createStatement());
mycon.getStat().executeUpdate(sql);
}
catch(Exception x){
System.out.println(x);
}
}
//MEthod to execute query that return results
ResultSet queryResponse(String sql) throws SQLException{
mycon.setCon(null);
mycon.setStat(null);
****This is the line where is the error*****
ResultSet res = mycon.getStat().executeUpdate(sql);
while(res.next()){
return res;
}
}
}
嗯,因为 executeUpdate()
returns 更新或删除的实体数,而且确实是 int
值。
因为 executeUpdate 方法 returns int
。这个 int
值显示有多少行受到您的 sql 语句的影响。
例如删除/更新/插入了多少行。
它 return 0
当您的语句不影响任何行时。
会是
int rowsUpdated = mycon.getStat().executeUpdate(sql);
你实际上是在执行更新语句,它只会影响 return 行,而不是 ResultSet
如果您想维护结果集,您可以使用
ResultSet rs = mycon.getStat().executeQuery("SELECT a, b FROM TABLE2");
或改为整数
int rowsUpdated = mycon.getStat().executeUpdate(sql);