【问题标题】:how to show data from database to JTable of Java Swing Controls如何将数据库中的数据显示到 Java Swing 控件的 JTable
【发布时间】:2011-09-16 23:51:21
【问题描述】:

关于如何使用 Java Swing Controls 的 JTable 显示数据库中的数据,我遇到了这个问题。我只是从 JForm 的调色板中拖放表格。

我不知道如何编码。

【问题讨论】:

    标签: java jtable desktop-application jform


    【解决方案1】:

    您需要使用 JDBC 将您的 java 程序连接到您的数据库。 之后,您需要使用 ResultSet 类提取数据。 您需要了解 JDBC 的基础知识并清楚了解数据库的命令。您还需要知道如何通过 java 使用数据库。所以阅读oracle的java在线教程(官方教程)。不会超过一个小时。 生活会更轻松

    【讨论】:

      【解决方案2】:

      使用此代码:

      import java.awt.*;
      import java.awt.event.*;
      import java.sql.*;
      import java.util.Vector;
      import javax.swing.*;
      import javax.swing.table.DefaultTableModel;
      
      public class DisplayEmpData extends JFrame implements ActionListener {
      
          JFrame frame1;
          JLabel l0, l1, l2;
          JComboBox c1;
          JButton b1;
          Connection con;
          ResultSet rs, rs1;
          Statement st, st1;
          PreparedStatement pst;
          String ids;
          static JTable table;
          String[] columnNames = {"User name", "Email", "Password", "Country"};
          String from;
      
          DisplayEmpData() {
      
              l0 = new JLabel("Fatching Employee Information");
              l0.setForeground(Color.red);
              l0.setFont(new Font("Serif", Font.BOLD, 20));
              l1 = new JLabel("Select name");
              b1 = new JButton("submit");
      
              l0.setBounds(100, 50, 350, 40);
              l1.setBounds(75, 110, 75, 20);
              b1.setBounds(150, 150, 150, 20);
              b1.addActionListener(this);
      
              setTitle("Fetching Student Info From DataBase");
              setLayout(null);
              setVisible(true);
              setSize(500, 500);
              setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
      
              add(l0);
              add(l1);;
              add(b1);
              try {
                  Class.forName("com.mysql.jdbc.Driver");  // (1)
                  con = DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name", "username", "password");  // (2)
                  st = con.createStatement();
                  rs = st.executeQuery("select uname from emp");
                  Vector v = new Vector();
                  while (rs.next()) {
                      ids = rs.getString(1);
                      v.add(ids);
                  }
                  c1 = new JComboBox(v);
                  c1.setBounds(150, 110, 150, 20);
      
                  add(c1);
                  st.close();
                  rs.close();
              } catch (Exception e) {
              }
          }
      
          public void actionPerformed(ActionEvent ae) {
              if (ae.getSource() == b1) {
                  showTableData();
              }
      
          }
      
          public void showTableData() {
      
              frame1 = new JFrame("Database Search Result");
              frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
              frame1.setLayout(new BorderLayout());
      //TableModel tm = new TableModel();
              DefaultTableModel model = new DefaultTableModel();
              model.setColumnIdentifiers(columnNames);
      //DefaultTableModel model = new DefaultTableModel(tm.getData1(), tm.getColumnNames());
      //table = new JTable(model);
              table = new JTable();
              table.setModel(model);
              table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
              table.setFillsViewportHeight(true);
              JScrollPane scroll = new JScrollPane(table);
              scroll.setHorizontalScrollBarPolicy(
                      JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
              scroll.setVerticalScrollBarPolicy(
                      JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
              from = (String) c1.getSelectedItem();
      //String textvalue = textbox.getText();
              String uname = "";
              String email = "";
              String pass = "";
              String cou = "";
      
              try {
                  pst = con.prepareStatement("select * from emp where UNAME='" + from + "'");
                  ResultSet rs = pst.executeQuery();
                  int i = 0;
                  if (rs.next()) {
                      uname = rs.getString("uname");
                      email = rs.getString("umail");
                      pass = rs.getString("upass");
                      cou = rs.getString("ucountry");
                      model.addRow(new Object[]{uname, email, pass, cou});
                      i++;
                  }
                  if (i < 1) {
                      JOptionPane.showMessageDialog(null, "No Record Found", "Error", JOptionPane.ERROR_MESSAGE);
                  }
                  if (i == 1) {
                      System.out.println(i + " Record Found");
                  } else {
                      System.out.println(i + " Records Found");
                  }
              } catch (Exception ex) {
                  JOptionPane.showMessageDialog(null, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
              }
              frame1.add(scroll);
              frame1.setVisible(true);
              frame1.setSize(400, 300);
          }
      
          public static void main(String args[]) {
              new DisplayEmpData();
          }
      }
      

      编辑:上面的代码以mysql为例。如果不使用mysql,请更改标有(1)和(2)的行。

      【讨论】:

        猜你喜欢
        • 2013-01-19
        • 2011-12-31
        • 1970-01-01
        • 2020-06-06
        • 2012-08-28
        • 2015-07-20
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        相关资源
        最近更新 更多