【问题标题】:Retrieving Data from JDBC Database into Jtable将 JDBC 数据库中的数据检索到 Jtable 中
【发布时间】:2015-03-05 02:35:48
【问题描述】:

您好,我已成功将我的 jTable 链接到 JDBC 数据库。 但是,我无法检索它们。我希望在我重新启动程序时显示保存的数据,但它不工作。

alarm.setText("");  
    DefaultTableModel model =(DefaultTableModel) hwList.getModel();
    if(!className.getText().trim().equals(""))
    {
        model.addRow(new Object[]{className.getText(), homeWork.getText(), dueDate.getText()});
    }
    else
    {
        alarm.setText("Class Name should not be blank.");
    }

        Connection conn;
        Statement st;

        try
    {
        String myDriver = "com.mysql.jdbc.Driver";
        String myUrl = "jdbc:mysql://localhost:3306/mysql";
        Class.forName("com.mysql.jdbc.Driver");
        System.out.println("Connecting to database");
        conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "");
        System.out.println("Connected to databse");


        String a = className.getText();
        String b = homeWork.getText();
        String c = dueDate.getText();            

        System.out.println("Inserting into the table");
        st = conn.createStatement();
        String stmt="INSERT INTO hwList (className, homeWork, dueDate)"+ "VALUES ("+"\'"+a+"\',"+"\'"+b+"\',"+"\'"+c+"\')";
        System.out.println(stmt);
        st.executeUpdate(stmt);

        System.out.println("Saved!");

    }
    catch (Exception e)
    {
        System.err.println("Got an exception!");
        System.err.println(e.getMessage());
    }    

这是我保存文档的代码!

有什么方法可以检索JDBC数据库中的数据并通过Jtable显示出来吗? 很抱歉问了这么简单的问题,但我是 Java 新手,我迫切需要帮助!

非常感谢!

用于加载数据的代码...

顺便说一句,我的 jtable 是一个包含三列的 3 列表——分别为 className、homeWork、dueDate。 谢谢!

String sql="SELECT * FROM hwList";
ResultSet rs = st.executeQuery(sql);
while(rs.next())
{
    String d = rs.getString("className");
    String e = rs.getString("homeWork");
    String f = rs.getString("dueDate");
}

【问题讨论】:

  • 你在哪里select 语句,你在哪里加载新数据?
  • 对不起。我是该网站的新手,我只是找不到我的原始帖子。你是什​​么意思创建一个实例变量?谢谢!
  • 我的意思是“您需要接受这个并更新您的原始问题,但基本上,您需要创建 TableModel 的实例并将每一行数据放入模型中......”这意味着什么?创建 TableModel 的实例?
  • DefaultTableModel model = new DefaultTabelModel(); 创建DefaultTableModel 类的新实例

标签: java mysql swing jdbc jtable


【解决方案1】:

首先创建一个新的TableModel...

DefaultTableModel model = new DefaultTableModel(new String[]{"Class Name", "Home work", "Due Date"}, 0);

从数据库中加载数据...

String sql="SELECT * FROM hwList";
ResultSet rs = st.executeQuery(sql);

将每一行数据添加到表模型中...

while(rs.next())
{
    String d = rs.getString("className");
    String e = rs.getString("homeWork");
    String f = rs.getString("dueDate");
    model.addRow(new Object[]{d, e, f});
}

将模型应用到您的JTable...

table.setModel(model);

您可能还想查看The try-with-resources Statement 并确保您正确管理您的资源

【讨论】:

    【解决方案2】:

    步骤:1

    import javax.swing.*;
    import java.awt.*;
    import javax.swing.table.DefaultTableModel;
    import java.sql.*;
    public class UserList extends JFrame {
        DefaultTableModel model = new DefaultTableModel();
        Container cnt = this.getContentPane();
        JTable jtbl = new JTable(model);
        public UserList() {
            cnt.setLayout(new FlowLayout(FlowLayout.LEFT));
            model.addColumn("Id");
            model.addColumn("Username");
            model.addColumn("Password");
            model.addColumn("Create");
            try {
                Class.forName("com.mysql.jdbc.Driver");
                Connection con = DriverManager.getConnection("jdbc:mysql://localhost/java_db", "root", "");
                PreparedStatement pstm = con.prepareStatement("SELECT * FROM users");
                ResultSet Rs = pstm.executeQuery();
                while(Rs.next()){
                    model.addRow(new Object[]{Rs.getInt(1), Rs.getString(2),Rs.getString(3),Rs.getString(4)});
                }
            } catch (Exception e) {
                System.out.println(e.getMessage());
            }
            JScrollPane pg = new JScrollPane(jtbl);
            cnt.add(pg);
            this.pack();
        }
    }
    

    步骤:2

    import javax.swing.JFrame;
    public class Main {
        public static void main(String[] args) {
            JFrame frame = new UserList();
            frame.setTitle("Swing Example");
            frame.setSize(500, 300);
            frame.setLocationRelativeTo(null);
            frame.setVisible(true);
            frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
    }
    

    演示

    【讨论】:

    • 别忘了添加 JDBC 驱动程序
    【解决方案3】:
    String myDriver = "com.mysql.jdbc.Driver";
    String myUrl = "jdbc:mysql://localhost:3306/mysql";
    Class.forName("com.mysql.jdbc.Driver");
    System.out.println("Connecting to database");
    conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mysql", "root", "");
    System.out.println("Connected to databse");
    Statement st;
    Vector data = new Vector();
    try {
        st = connection.createStatement();
        ResultSet res = st.executeQuery("SELECT col_name FROM table_name");
        ResultSetMetaData metaData = res.getMetaData();
        int columns = metaData.getColumnCount();
        while (res.next()) {
           Vector row = new Vector(columns);
           for (int i = 1; i <= columns; i++) {
            row.addElement(res.getObject(i));
           }
           data.addElement(row);
        }
    } catch (SQLException e) {
        e.printStackTrace();
    }
    Vector columnNames = new Vector();
    columnNames.addElement("col_1");
    columnNames.addElement("col_name_n");
    table = new JTable(data,columnNames);
    

    您可以使用类似上面的代码从数据库中检索数据并将其存储在 jtable 中。

    【讨论】:

    • table = new JTable(data,columnNames); 不是必需的,除非您以前从未构建过表。只需创建新模型并应用于 JTable 的现有实例...
    【解决方案4】:

    喂,

    1. 将您的ResultSet 更改为ArrayList
    2. 为您的JTalbe 创建一个模型,该模型使用来自ArrayList 的数据

    应该可以的。

    【讨论】:

    • 如何从数据库中加载数据?
    • "有什么办法可以把JDBC数据库中的数据取出来并通过Jtable展示出来吗?"...
    【解决方案5】:

    首先创建表模型,然后使用 fetch_data() 函数。确保您的数据库连接正常。在主构造函数中调用函数。而已。

    DefaultTableModel dm;
    
    dm=(DefaultTableModel) jTable1.getModel();
    
    public void fetch_data(){
    
        try{
            String sql= "select * from tbl_name";
            ResultSet rs=st.executeQuery(sql);
            YourjTableName.setModel(DbUtils.resultSetToTableModel(rs));
        }catch(Exception e){
            System.out.println(e);
        }
    }
    

    【讨论】:

      【解决方案6】:

      问题说明:从数据库中检索数据并在java中显示在JTable上。

      代码:(用于检索) *根据您的需要更改代码

      String tquery = "SELECT * FROM Member";
              DbConnection obj = new DbConnection();
              ResultSet r = obj.Retrive(tquery);
              while (r.next()) {
                  int i = r.getInt(1);
                  String d = r.getString(2);
                  String e = r.getString(3);
                  String f = r.getString(4);
                  String h = r.getString(5);
                  String w = r.getString(6);
                  DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());
                  model.addRow(new Object[]{i, d, e, f, h, w});
              }
      

      代码(简体):

              String tquery = "SELECT * FROM Member";
              ResultSet rs = st.executeQuery(sql);
              while (r.next()) {
                  int i = r.getInt(1);
                  String d = r.getString(2);
                  DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());
                  model.addRow(new Object[]{i, d);//add row to JTable
              }
      

      如果这个DefaultTableModel model = new DefaultTableModel(); 不工作使用DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());

      希望对你有帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多