在我的项目中,员工插入一个表号,选择客户订购的所有商品并将其保存到数据库中。我有三张桌子:
Employee(empId, firstname, lastname)
Orders(orderId,tableNum,empIDFK,itemIDFK,totalPrice)
Item(itemId,itemName, itemPrice)
我的问题是,如果员工在订单中放置多个项目,则只保存itemIDFK列中的最后一项。如何获得员工输入的所有项目的ID?
以下是一些示例代码,大多数按钮的代码都与此类似:
private void chickenbuttonActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
st = connection.createStatement();
String query;
query = "SELECT itemName, itemPrice FROM item WHERE itemID = '14446'";
String itemName = " ",itemPrice =" ";
ResultSet rs = st.executeQuery(query);
if(rs != null){
while(rs.next())
{
itemName = rs.getString(1);
itemPrice = rs.getString(2);
}
model.addRow(new Object[]{itemName, itemPrice});
total+= Double.parseDouble(itemPrice);
String format = formatter.format(total);
totalField.setText(format);
}
//inserts corresponding item id in itemIDFK
String query2 = "Update orders SET itemIDFK = '14446' Where tableNum = " + tableNum;
ps= connection.prepareStatement(query2);
ps.executeUpdate();
} catch (SQLException ex) {}
答案 0 :(得分:4)
在这种情况下你要做的是添加另一个表,比如说OrderDetails
,这个表会有:
PK: Id
FK: OrderId
FK: ItemId
那么您可以在订单中添加多个商品。在one-to-many
和Order
OrderDetails
与many-to-many
和OrderDetails
之间会有Items
答案 1 :(得分:2)
SOfanatic的回答是正确的方法。如果由于某种原因您无法添加其他表格,那么itemIDFK
将需要保留一个分隔的项目列表,例如itemId;itemId;itemId
(如果ID是固定宽度,则为itemiditemIditemId
) - 问题是很多更难以查询
答案 2 :(得分:0)
MySQL 确实有一种数据类型 Serial。因此,还有另一种方法可以实现多件商品和不同数量商品的订单。
可以实现一个 Arraylist<>,序列化和反序列化单列中的数据。