Java ResultSet对象中出现错误
我考虑的是MVC应用程序以及列表的加载方法,这些列表可以通过选择的元素删除,以进行查询 与此相关的类有:Java ResultSet对象中出现错误,java,mysql,Java,Mysql,我考虑的是MVC应用程序以及列表的加载方法,这些列表可以通过选择的元素删除,以进行查询 与此相关的类有: package modelo; import java.sql.*; import controlador.*; public class CargaMenus { public CargaMenus() { miconexion = new Conexion(); } public String ejecutaConsultas() { //
package modelo;
import java.sql.*;
import controlador.*;
public class CargaMenus {
public CargaMenus() {
miconexion = new Conexion();
}
public String ejecutaConsultas() { //Va a devolver el nombre de las tareas en el conbobox
Tareas miTarea = null;
Connection accesoBBDD = miconexion.dameConexion();
try {
Statement secciones = accesoBBDD.createStatement();
Statement descripciones = accesoBBDD.createStatement();
rs = secciones.executeQuery("SELECT DISTINCTROW NOMTAREA FROM TAREAS");
rs2 = descripciones.executeQuery("SELECT DISTINCTROW DESCTAREA FROM TAREAS");
miTarea = new Tareas();
miTarea.setNomtarea(rs.getString(1));
miTarea.setDesctarea(rs2.getString(1));
rs.close();
rs2.close();
} catch (SQLException e) {
System.out.println("Error en la conexión CARGAMENUS");
e.printStackTrace();
}
return miTarea.getNomtarea();
}
public Conexion miconexion;
public ResultSet rs;
public ResultSet rs2;
private String consulta = "SELECT DISTINCTROW NOMTAREA FROM TAREAS";
private String consulta2 = "SELECT DISTINCTROW DESCTAREA FROM TAREAS";
}
执行方法并传递数据库返回内容的类是:
package controlador;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.sql.ResultSet;
import modelo.CargaMenus;
import vista.Marco_Aplicacion2;
public class ControladorCargaMenus extends WindowAdapter {
public ControladorCargaMenus(Marco_Aplicacion2 elmarco) {
this.elmarco = elmarco;
}
public void windowOpened(WindowEvent e) {
obj.ejecutaConsultas();
try {
while(obj.rs.next()) {
elmarco.secciones.addItem(obj.rs.getString(1));
}
while(obj.rs2.next()) {
elmarco.paises.addItem(obj.rs2.getString(1));
}
} catch (Exception e2) {
// TODO: handle exception
e2.printStackTrace();
}
}
CargaMenus obj = new CargaMenus();
private Marco_Aplicacion2 elmarco;
}
当我运行程序时,我只看到我设计的2的组合框
还有下面的错误
我原以为问题在于我的sql查询,但我验证了它们,在mysql中运行它们时没有问题
当我只加载其中一个列表(第一个)来注释与第二个列表相关联的行时,即使应用程序在控制台中抛出错误,也会加载我
我正在学习的链接是
如何加载列表?在得到结果之前,您应该调用
rs.next
if (rs.next()) {
miTarea.setNomtarea(rs.getString(1));
miTarea.setDesctarea(rs2.getString(1));
}
根本原因是您没有在
rs.getString之前调用rs.next()
,
它只在运行ejbutaconsultas
方法之后调用。这同样适用于rs2
用法
此外,您还需要在代码中遵循一些最佳实践,例如不要将ResultSet
公开给类外,并执行适当的JDBC异常处理和关闭ResultSet
s和Connection
s。将rs.close()和rs2.close()调用移到尝试使用结果集的位置之后