[OK]をので、私は、DBからデータを取得し、このようなリストにそれを置く方法があります:DBからjTableへのデータをJavaで追加するにはどうすればいいですか?
public List<Sale> getSales() throws SQLException{
List<Sale> res = new ArrayList<Sale>();
Statement st = conn.createStatement();
ResultSet rs = st.executeQuery("select sale.id,product.name,sale.price,sale.quantity,sale.total,employee.name,buyer_seller.name from sale "
+ " join product on sale.product = product.id "
+ " join employee on sale.salesman = employee.id "
+ " join buyer_seller on sale.buyer = buyer_seller.id;");
while(rs.next()){
res.add(new Sale (rs.getInt(1),new Product(-1,rs.getString(2),new Category(-1,"",""),new Manufacturer(-1,"",""),0.0,-1),rs.getDouble(3),rs.getInt(4),rs.getDouble(5),new Employee(-1,rs.getString(6),"","",new JobCategory(-1,"",""),"",""),new BuyerSeller(-1,rs.getString(7),"","","")));
}
return res;
}
をして、私はそのデータをJTableのを埋める方法があります:
public void fillSales(){
jLabel1.setText("Podaci se ucitavaju iz baze...");
SwingWorker sw = new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
MyShopRepository repo = MyShopRepository.getInstance();
List<Sale> allSale = repo.getSales();
return allSale;
}
@Override
protected void done() {
super.done();
try {
List<Sale> res = (List<Sale>)get();
DefaultTableModel dtm = (DefaultTableModel)jTable1.getModel();
int redova = dtm.getRowCount();
for(int i=0;i<redova;i++){
dtm.removeRow(0);
}
for(Sale s : res){
dtm.addRow(new Object[]{
s.id,s.product.name,s.price,s.quantity,s.total,s.salesman.name,s.buyer.name
});
}
jLabel1.setVisible(false);
} catch (InterruptedException | ExecutionException ex) { }
}
};
sw.execute();
}
をこれはうまく動作しますが、テーブルからいくつかの行を削除すると、nullに設定され、jTableに表示されません。その値がnullの場合、どのように空のセルだけでjTableにも追加できますか?データベース側では
iは別のテーブルへのFKを持つDBテーブルから行を削除すると、私はDELETEでの使用、その上にFKを有するカラムの値NULLを有するであろうJTableの行を参照して傾けますSET NULL。 –