简体   繁体   English

从 JDBC 数据库检索数据到 Jtable

[英]Retrieving Data from JDBC Database into Jtable

Hi I have successfully linked my jTable to JDBC database.嗨,我已经成功地将我的 jTable 链接到了 JDBC 数据库。 However, I am having trouble retrieving them.但是,我无法检索它们。 I want the saved data to appear when I restart the program but it is not working.我希望在重新启动程序时显示保存的数据,但它不起作用。

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?有什么办法可以检索JDBC数据库中的数据并通过Jtable显示吗? I'm so sorry for asking such a simple question but I am new to java and I desperately need help!我很抱歉问这么简单的问题,但我是 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.顺便说一句,我的 jtable 是一个 3 列表,分别包含三列——className、homeWork、dueDate。 Thank you!谢谢!

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

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 Statement and make sure you're managing your resources properly您可能还想查看try-with-resources 声明并确保您正确管理您的资源

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演示

在此处输入图片说明

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 中。

Hie,嗨,

  1. Change your ResultSet to an ArrayList将您的ResultSet更改为ArrayList
  2. Create a model for your JTalbe that uses data from the ArrayList为使用来自ArrayList数据的JTalbe创建模型

That should work.那应该工作。

First create the table model then use that fetch_data() function.首先创建表模型,然后使用该fetch_data()函数。 Make sure your database connection is working.确保您的数据库连接正常工作。 Call the function in main constructor.在主构造函数中调用该函数。 That's it.就是这样。

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

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 this DefaultTableModel model = new DefaultTableModel();如果这个DefaultTableModel model = new DefaultTableModel(); not work use DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());不工作使用DefaultTableModel model = (DefaultTableModel) (Member_table.getModel());

Hope it helps you!希望对你有帮助!

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM