Java 从 JDBC 数据库检索数据到 Jtable

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/27815400/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-11 05:05:53  来源:igfitidea点击:

Retrieving Data from JDBC Database into Jtable

javamysqlswingjdbcjtable

提问by mhk

Hi I have successfully linked my jTable to JDBC database. However, I am having trouble retrieving them. I want the saved data to appear when I restart the program but it is not working.

嗨,我已经成功地将我的 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());
    }    

This is my code for saving the document!

这是我保存文档的代码!

Is there any way to retrieve data in JDBC data base and show it through Jtable? I'm so sorry for asking such a simple question but I am new to java and I desperately need help!

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

Thank you so much!

非常感谢!

Code used to load the data...

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

Btw, my jtable is a 3 column table with three columns--className, homeWork, dueDate respectively. Thank you!

顺便说一句,我的 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");
}

采纳答案by MadProgrammer

Start by creating a new TableModel...

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

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

Load the data from the database...

从数据库加载数据...

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

Add each row of data to the table model...

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

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});
}

Apply the model to your JTable...

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

table.setModel(model);

You may also want to look at The try-with-resources Statementand make sure you're managing your resources properly

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

回答by Nation Chirara

Hie,

嗨,

  1. Change yourResultSetto an ArrayList
  2. Create a model for your JTalbethat uses data from the ArrayList
  1. 将您ResultSet的更改为ArrayList
  2. 为您创建一个JTalbe使用数据的模型ArrayList

That should work.

那应该工作。

回答by Thanos Pappas

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);

You can use something like the code above to retrieve data from database and store it in jtable.

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

回答by Baran Saeed

First create the table model then use that fetch_data()function. Make sure your database connection is working. Call the function in main constructor. That's it.

首先创建表模型,然后使用该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);
    }
}

回答by Ram Pukar

Step:1

第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();
    }
}

Step:2

第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);
    }
}

Demo

演示

enter image description here

在此处输入图片说明

回答by a b

Problem Statement :Retrive data from database and display on JTable in java.

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

CODE: (for retrieve) *change code according to your need

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

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});
        }

CODE (simplified):

代码(简化):

        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
        }

if thisDefaultTableModel model = new DefaultTableModel();not work use DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());

如果这DefaultTableModel model = new DefaultTableModel();不起作用,请使用DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());

Hope it helps you!

希望对你有帮助!