MySQL 데이터베이스에 연결하고 select 문을 사용하여 JTable을 통해 상태가 "O"인 행을 표시하는 Java 응용 프로그램이 있습니다. 선택한 행을 클릭하면 행의 세부 사항이 다른 GUI 양식으로 표시되도록 마우스 이벤트를 추가했습니다. 새 양식에서 마우스 이벤트가 발생하면 데이터베이스 테이블이 상태 "R"로 갱신됩니다. JTable의 원래 디스플레이로 돌아 가면 행이 더 이상 표시되지 않을 것으로 예상됩니다. 그러나 이전에 선택한 행이 여전히 JTable에 표시되고 업데이트 된 상태로 새로 고치려면 JTable에 대한 전체 프로그램을 종료해야합니다.데이터베이스 연결 새로 고침
테이블 상태는 "R"로 업데이트지고 각 양식에서 탐색 할 수
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
을 사용하고 있습니다. 디스플레이 GUI로 돌아 가면 변경된 상태를 사용하여 테이블을 업데이트 할 수 있도록 데이터베이스 연결을 새로 고치는 방법이 있습니까?
이 코드 사용하여 표시 :이 코드로 돌아가
public class ReceiveOrderedParts extends JFrame{
static Vector<Vector<String>> data = new Vector<Vector<String>>();
static JTable table;
ReceiveOrderedParts(final String st) throws InterruptedException, SQLException{
super("Order Details Inquiry");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel topPanel = new JPanel();
getContentPane().add(topPanel, BorderLayout.PAGE_START);
Vector<String> headers = new Vector<String>();
headers.add("Order Number");
headers.add("Date");
headers.add("Part Number");
headers.add("Part Name");
headers.add("Application");
headers.add("Quantity");
headers.add("Total Cost");
headers.add("Supplier");
headers.add("Country");
getData();
//this is the model which contain actual body of JTable
DefaultTableModel model = new DefaultTableModel(data, headers);
table = new JTable(model);
table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
//table.enable(false);
table.addMouseListener(new ReceiveOrderedParts.MyMouseAdapter());
boolean b = table.isCellEditable(WIDTH, WIDTH);
b = false;
header_size();
JScrollPane scroll = new JScrollPane(table);
scroll.setHorizontalScrollBarPolicy(
JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
scroll.setVerticalScrollBarPolicy(
JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
getContentPane().add(scroll, BorderLayout.PAGE_START);
pack();
setResizable(false);
setVisible(true);
setSize(1000, 700);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public class MyMouseAdapter extends MouseAdapter {
public void mousePressed(MouseEvent e) {
int colIdx = table.columnAtPoint(e.getPoint());
int rowIdx = table.rowAtPoint(e.getPoint());
Object obj = table.getModel().getValueAt(rowIdx, colIdx) ;
String order = obj.toString();
JOptionPane.showMessageDialog(null,"Receive Order "+ order + "?", "Success",
JOptionPane.INFORMATION_MESSAGE);
// return;
try {
SelectOrder seo = new SelectOrder(order);
seo.setVisible(true);
setVisible(false);
} catch (InterruptedException ex) {
Logger.getLogger(ReceiveOrderedParts.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
/**
* Setting the particular Column Size in JTable
*/
public static void header_size() {
TableColumn column = table.getColumnModel().getColumn(0);
column.setPreferredWidth(100);
column = table.getColumnModel().getColumn(1);
column.setPreferredWidth(100);
}
/**
* Fetching Data From MySql Database and storing in a Vector of a Vector to
* Display in JTable
*/
private static void getData() throws SQLException {
// Enter Your MySQL Database Table name in below Select Query.
String str = "select order_number, Part_number, spare_desc, vehicle_app, qnty_ordered,"
+ "seller_name, total_purchases, country, order_date from order_details_table where status = 'O'";
Connection cn = null;
ResultSet rs;
Statement st;
try {
// Change the database name, hosty name,
// port and password as per MySQL installed in your PC.
cn = DriverManager.getConnection("jdbc:mysql://"
+ "localhost:3306/test", "root", "[email protected]");
st = cn.createStatement();
rs = st.executeQuery(str);
while (rs.next()) {
Vector<String> d = new Vector<String>();
d.add(rs.getString("order_number"));
d.add(rs.getString("order_date"));
d.add(rs.getString("Part_number"));
d.add(rs.getString("spare_desc"));
d.add(rs.getString("vehicle_app"));
d.add(rs.getString("qnty_ordered"));
d.add(rs.getString("total_purchases"));
d.add(rs.getString("seller_name"));
d.add(rs.getString("country"));
d.add("\n\n\n\n\n\n\n");
data.add(d);
}
cn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
을;
Connection conn = null;
String url = "jdbc:mysql://localhost:3306/";
String db = "test";
String driver = "com.mysql.jdbc.Driver";
Class.forName(driver);
conn = DriverManager.getConnection(url + db, "user", "password");
Statement st = conn.createStatement();
String partno = tpart.getText();
String sparedesc = tdesc.getText();
String vapp = tapp.getText();
String qunty = tqnty.getText();
String costper = tcost.getText();
String country = tcountry.getText();
String retail = tretail.getText();
String store = tstore.getText();
String location = tlocation.getText();
String rdate = trdate.getText();
String storeit = "INSERT INTO Store_info_table (Part_number, spare_desc, vehicle_app, qnty_received, cost_per_unit"
+ ", selling_price, country, store_name, store_location, recvd_date) "
+ "VALUES ('" + partno + "', '" + sparedesc + "', '" + vapp + "', '" + qunty + "', '" + costper + "','" + retail + "','" + country + "','" + store + "','" + location + "','" + rdate + "')";
st.execute(storeit);
String updateOrder = "UPDATE order_details_table set status = 'R' where order_number = '" + order + "'";
st.execute(updateOrder);
JOptionPane.showMessageDialog(null,"Item Stored Successfully", "Success",
JOptionPane.INFORMATION_MESSAGE);
conn.close();
ReceiveOrderedParts rop = new ReceiveOrderedParts(order);
rop.invalidate();
rop.setVisible(true);
setVisible(false);