java - 如何在JTable(JAVA)中显示FK ID的引用

标签 java mysql swing jtable

enter image description here你好,

我的数据库中有多个表,其中一些表与我的employee_details 表有关系,现在,我想将employee_details 表中的记录显示到我的JTable。但我想要 FK ID 字符串而不是实际 ID。

public void DBTable(){

    try {
        String InsertToTable = "Select EmpDetails_ID, First_Name, Last_Name, Gender, Position_ID, Department_ID, "
                + "Office_Location_ID, Employee_Status, Office_Number, Mobile_Number, Email_Address, Remarks, Image From employee_details";
        pst = con.prepareStatement(InsertToTable);
        rs= pst.executeQuery();
        EmpDBTable.setModel(DbUtils.resultSetToTableModel(rs));
    } catch (SQLException ex) {
        Logger.getLogger(Employee_Details.class.getName()).log(Level.SEVERE,null,ex);
    }
}

最佳答案

我修改了在网上找到的示例代码。我下载了 rs2xml.jar 以获取“DbUtils.resultSetToTableModel(rs)”。我在本地 sql 服务器中创建了您的表employee_details 和department。我使用了给您的 SQL Join 示例,并且能够在 JTable 上获得额外的列。请将此示例与您自己的代码进行比较。在此代码中,我得到以下结果: enter image description here

这是代码(根据在线示例修改):

import javax.swing.*;
import javax.swing.table.DefaultTableModel;
import java.awt.*;
import java.sql.*;
import java.awt.event.*;
import com.microsoft.sqlserver.jdbc.SQLServerDriver;
import net.proteanit.sql.DbUtils;

public class SearchResult {
JFrame frame, frame1; 
JPanel panel;
static JTable table;

String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String url = "jdbc:sqlserver://localhost;instance=DESKTOP-8QFTIP4;databaseName=deneme;user=sa;password=******";
String userName = "sa";
String password = "*****";    

public void createUI()
{
    showTableData();
} 
public void showTableData()
{

    frame1 = new JFrame("Database Search Result");
    frame1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame1.setLayout(new BorderLayout()); 
    table = new JTable(); 
    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); 
    try
    {
        Class.forName(driverName);
        System.out.println("conn before");
        Connection con = DriverManager.getConnection(url, userName, password);
        System.out.println("conn after");
        String sql ="Select EmpDetails_ID, First_Name, Last_Name, Gender, Position_ID, "
                + " employee_details.Department_ID,department.Department_Name , Office_Location_ID, Employee_Status, "
                + " Office_Number, Mobile_Number, Email_Address, Remarks, Image "
                + " From employee_details inner join department on employee_details.Department_ID = department.Department_ID";
        PreparedStatement ps = con.prepareStatement(sql);
        System.out.println("about to execute");
        ResultSet rs = ps.executeQuery();
        int i =0;
        System.out.println("after to execute"); 
        table.setModel(DbUtils.resultSetToTableModel(rs));

    }
    catch(Exception ex)
    {
        ex.printStackTrace();
        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[])
{
    SearchResult sr = new SearchResult();
    sr.createUI();
}
}

关于java - 如何在JTable(JAVA)中显示FK ID的引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56605275/

相关文章:

java - Java 中的自定义绘画 - 将 UI 元素绘制到 JPanel 上

java - 如何从 Java 中的生产代码中删除调试语句

java - 图形生成器监听器中的 JMeter java.io.FileNotFoundException

java - 将事件处理程序添加到 JButton 中以在 Java GUI 中重新绘制图像时出错

java - 陷入 JavaFX ListView 困境

php - 我们如何使用 PHP/Drupal 锁定表

java - jtextfield 默认光标位置

java - Date.after 和 Data.after 位于同一 if 语句中

php - 比较值以给出不同的输出

mysql - 使用 WHERE 时从多个匹配中选择第一个结果