DAO函数向JComboBox输入数据的疑惑
Doubts to input data from DAO functions to JComboBox
这是我第一次来这里,因此是我的第一个问题,我通过网络看到一个演示应用程序学习从 JCombobox 中选择一个选项并根据它获得他相应的 ID 但他所有的数据库查询、preparedstatements 和 resultSet 方法直接在 JCombobox actionPerformed 事件上执行,现在我正尝试在我的大学期末论文申请中使用这个想法。
我正在尝试在 DAO class 中执行您的所有代码,为此我执行了两个函数 comboboxUse() 和 getCodPrioridade(),一个是 return 从数据库到 JCombobox 的所有项目,这是另一个一个是从每个项目中获取 ID,但它是 return 一个不完整的 JCombobox,只有最后一行,我确实喜欢这样:
package br.com.jdbc.victor.dao.entidadesdao;
import br.com.jdbc.dao.DAOException;
import br.com.jdbc.victor.transicao.ChamadoDAO;
import br.com.jdbc.victor.vo.Chamado;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
private Connection con;
private PreparedStatement pstm;
private Statement stm = null;
private ResultSet rs = null;
@Override
public String comboboxUse() throws DAOException{
Chamado c = null;
String getpri = null;
try{
getpri = "SELECT * FROM prioridadedetalhe";
stm = con.createStatement();
rs = stm.executeQuery(getpri);
while(rs.next()){
c = new Chamado();
c.setPrioridade(rs.getString("prioridade"));
c.toString();
}
} catch(SQLException ex){
throw new DAOException("Erro no SQL", ex);
} finally {
if(pstm!=null){
try {
pstm.close();
} catch (SQLException ex) {
throw new DAOException("Erro ao fechar conexão", ex);
}
} if(rs!=null){
try {
rs.close();
} catch (SQLException ex) {
throw new DAOException("Erro ao fechar conexão", ex);
}
}
}
return c.getPrioridade();
}
在我尝试以这种形式调用该函数之后:
package br.com.jdbc.victor.view;
import br.com.jdbc.dao.DAOException;
import br.com.jdbc.victor.dao.entidadesdao.MySQLChamadoDAO;
import br.com.jdbc.victor.dao.entidadesdao.MySQLDaoManager;
import br.com.jdbc.victor.vo.Chamado;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
public class FormNovaChamada extends javax.swing.JDialog {
private Chamado chamado;
private boolean editavel;
private MySQLChamadoDAO chamdao;
private FormInicio frmini;
private MySQLDaoManager man;
private ResultSet rs = null;
int cont = 0;
int i = 0;
public Chamado getChamado() {
return chamado;
}
public void setChamado(Chamado chamado) {
this.chamado = chamado;
}
public boolean isEditavel() {
return editavel;
}
public FormNovaChamada(java.awt.Frame parent, boolean modal) throws SQLException {
super(parent, modal);
initComponents();
desabilitarTextField();
this.cbPrioridade.removeAllItems();
try {
MySQLDaoManager man = new MySQLDaoManager("root", "", "localhost", "atendimentos", 3306);
this.cbPrioridade.addItem(man.getChamadoDAO().comboboxUse());
cont++;
} catch (DAOException ex) {
Logger.getLogger(FormNovaChamada.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是我的数据库:
+---------------------+------------+
| idPrioridadeDetalhe | prioridade |
+---------------------+------------+
| 1 | alta |
| 2 | média |
| 3 | baixa |
+---------------------+------------+
显然它没有给出任何错误或类似的东西,它获取列的最后数据而不是获取要插入 JCombobox 的所有数据库值...我想知道我能做什么做?!不知道我的问题问清楚了没有,还是谢谢!!
假设 cbPrioridade 是您的 JComboBox 组件,请检查为什么只在其中添加一项:
this.cbPrioridade.addItem(man.getChamadoDAO().comboboxUse());
然后检查为什么你 return 只是来自 db
的字符串
public String comboboxUse() throws DAOException{
你 return 只是数据库中的最后一个元素而不是 returning 列表
这是我第一次来这里,因此是我的第一个问题,我通过网络看到一个演示应用程序学习从 JCombobox 中选择一个选项并根据它获得他相应的 ID 但他所有的数据库查询、preparedstatements 和 resultSet 方法直接在 JCombobox actionPerformed 事件上执行,现在我正尝试在我的大学期末论文申请中使用这个想法。 我正在尝试在 DAO class 中执行您的所有代码,为此我执行了两个函数 comboboxUse() 和 getCodPrioridade(),一个是 return 从数据库到 JCombobox 的所有项目,这是另一个一个是从每个项目中获取 ID,但它是 return 一个不完整的 JCombobox,只有最后一行,我确实喜欢这样:
package br.com.jdbc.victor.dao.entidadesdao;
import br.com.jdbc.dao.DAOException;
import br.com.jdbc.victor.transicao.ChamadoDAO;
import br.com.jdbc.victor.vo.Chamado;
import java.io.FileInputStream;
import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Time;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;
private Connection con;
private PreparedStatement pstm;
private Statement stm = null;
private ResultSet rs = null;
@Override
public String comboboxUse() throws DAOException{
Chamado c = null;
String getpri = null;
try{
getpri = "SELECT * FROM prioridadedetalhe";
stm = con.createStatement();
rs = stm.executeQuery(getpri);
while(rs.next()){
c = new Chamado();
c.setPrioridade(rs.getString("prioridade"));
c.toString();
}
} catch(SQLException ex){
throw new DAOException("Erro no SQL", ex);
} finally {
if(pstm!=null){
try {
pstm.close();
} catch (SQLException ex) {
throw new DAOException("Erro ao fechar conexão", ex);
}
} if(rs!=null){
try {
rs.close();
} catch (SQLException ex) {
throw new DAOException("Erro ao fechar conexão", ex);
}
}
}
return c.getPrioridade();
}
在我尝试以这种形式调用该函数之后:
package br.com.jdbc.victor.view;
import br.com.jdbc.dao.DAOException;
import br.com.jdbc.victor.dao.entidadesdao.MySQLChamadoDAO;
import br.com.jdbc.victor.dao.entidadesdao.MySQLDaoManager;
import br.com.jdbc.victor.vo.Chamado;
import java.sql.Date;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Time;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JOptionPane;
public class FormNovaChamada extends javax.swing.JDialog {
private Chamado chamado;
private boolean editavel;
private MySQLChamadoDAO chamdao;
private FormInicio frmini;
private MySQLDaoManager man;
private ResultSet rs = null;
int cont = 0;
int i = 0;
public Chamado getChamado() {
return chamado;
}
public void setChamado(Chamado chamado) {
this.chamado = chamado;
}
public boolean isEditavel() {
return editavel;
}
public FormNovaChamada(java.awt.Frame parent, boolean modal) throws SQLException {
super(parent, modal);
initComponents();
desabilitarTextField();
this.cbPrioridade.removeAllItems();
try {
MySQLDaoManager man = new MySQLDaoManager("root", "", "localhost", "atendimentos", 3306);
this.cbPrioridade.addItem(man.getChamadoDAO().comboboxUse());
cont++;
} catch (DAOException ex) {
Logger.getLogger(FormNovaChamada.class.getName()).log(Level.SEVERE, null, ex);
}
}
这是我的数据库:
+---------------------+------------+
| idPrioridadeDetalhe | prioridade |
+---------------------+------------+
| 1 | alta |
| 2 | média |
| 3 | baixa |
+---------------------+------------+
显然它没有给出任何错误或类似的东西,它获取列的最后数据而不是获取要插入 JCombobox 的所有数据库值...我想知道我能做什么做?!不知道我的问题问清楚了没有,还是谢谢!!
假设 cbPrioridade 是您的 JComboBox 组件,请检查为什么只在其中添加一项:
this.cbPrioridade.addItem(man.getChamadoDAO().comboboxUse());
然后检查为什么你 return 只是来自 db
的字符串public String comboboxUse() throws DAOException{
你 return 只是数据库中的最后一个元素而不是 returning 列表