有两种形式只链接到数据库中的一个表。一个表单将数据插入表中,另一个表单检索它。我通过一种形式编写了编码,但它不起作用。这是第一种形式的代码片段(fashion_and_footwear):
int dress1=100;
double price1=Double.parseDouble(Price1.getText());
DefaultTableModel CurrentPurchases= new DefaultTableModel();
int rows=CurrentPurchases.getRowCount();
if (rows>0){
for (int i = 0; i < rows; i++) {
CurrentPurchases.removeRow(0); }
}
try{
Connection connection=getConnection();
stmt=connection.createStatement();
String Buy1Query1="Update Products set Quantity=Quantity-1 where Product_no=1;";
String Buy1Query2="Insert into Buy values('"+Pname1.getText()+"',"+price1+");";
stmt.executeUpdate(Buy1Query1);
stmt.executeUpdate(Buy1Query2);
dress1--;
if(dress1==0){
JOptionPane.showMessageDialog(null,"Sorry, This Item is Out of Stock!");
}
new ShoppingCart().setVisible(true);
String Pname="";
double Price;
PreparedStatement buyquery=connection.prepareStatement("Select * from Buy;");
rs=buyquery.executeQuery();
if(rs.next()){
Pname=rs.getString("ProductName");
Price=rs.getDouble("Price");
CurrentPurchases.addRow(new Object[]{Pname,Price});
}
}
catch(SQLException ex){
ex.printStackTrace();
ex.getErrorCode();
}
finally{}
这是我创建的表格:
create table Buy(ProductName varchar(100),Price decimal(7,2));
数据被插入到后端表中,但不会传输到其他表单(ShoppingCart)。我该怎么办? 注意:ShoppingCart表单中已有一个名为CurrentPurchases的表组件。
答案 0 :(得分:0)
如评论中所述,问题是插入后选择的数据不是最后插入的行。所以,有两种可能的解决方案。
第一个也是最好的一个是将自动增量列添加到Buy
作为主键。您可以使用类似于:
ALTER TABLE Buy ADD COLUMN id integer primary key not null auto_increment;
然后,在插入此表后(您不需要更改INSERT
语句),您必须获取最后生成的密钥:
stmt.executeUpdate(Buy1Query2);
ResultSet rsKey = stmt.getGeneratedKeys();
rsKey.next();
int lastInsertId = rsKey.getInt(1);
然后,您必须更改SELECT
声明:
PreparedStatement buyquery = connection.prepareStatement(“Select * from Buy where id =”+ lastInsertId);
就是这样。
另一个选项是,只要productname
表中Buy
中的重复值不能使用以下SELECT
语句:
PreparedStatement buyquery=connection.prepareStatement(
"Select * from Buy where productname = '"+
Pname1.getText()+"'");
但我宁愿第一个选择。