как отобразить ссылку FK ID в JTable (JAVA) - PullRequest
0 голосов
/ 15 июня 2019

enter image description here Привет,

У меня есть несколько таблиц в моей базе данных, и некоторые из этих таблиц связаны с моей таблицей employee_details, и теперь я хочу отобразить записи изтаблица employee_details для моего JTable.Но я хочу, чтобы строка FK 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);
    }
}

1 Ответ

0 голосов
/ 16 июня 2019

Я изменил пример кода, который нашел в Интернете. Я скачал rs2xml.jar, чтобы получить «DbUtils.resultSetToTableModel (rs)». Я создал ваши таблицы employee_details и отдел на моем локальном сервере sql. Я использовал пример 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();
}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...