2016-09-30 22 views
0

這是我第一次來這裏,因此我的第一個問題,我看到一個演示應用程序,通過網絡學習從JCombobox中選擇一個選項,並根據它獲得他的對應ID,但他的所有數據庫查詢,preparedstatements和resultSet方法直接在JCombobox actionPerformed事件上做,現在我試圖在我的大學畢業論文應用中使用這個想法。 我試圖做所有你的代碼裏面的DAO類,爲此我做了兩個函數comboboxUse()和getCodPrioridade(),一個從數據庫返回所有itens到JCombobox和這另一個從每個項目,但它返回一個不完整的JComboBox只有最後一排,我不喜歡的是:從DAO函數向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  | 
+---------------------+------------+ 

enter image description here

顯然,這並沒有給任何錯誤或類似的東西,它得到了列的最後一個數據,而不是讓所有的數據庫值在JComboBox中插入...我想知道我能做什麼?!我不知道我的問題是否清楚,謝謝!

回答

0

假設cbPrioridade是你的JComboBox組件,檢查你爲什麼添加只有一個項目有:

this.cbPrioridade.addItem(man.getChamadoDAO().comboboxUse()); 

,並在此之前,檢查原因返回從數據庫

public String comboboxUse() throws DAOException{ 

回來就最後一個元素只是字符串從數據庫而不是返回列表

+0

嗨Olesia!非常感謝您的幫助,這真的是一個愚蠢的錯誤,我在這裏做了,我已經改變了函數返回到List ,我做了從List到Array的轉換,並且它工作正常!非常感謝:D –