Java MySQL循环”;在“;
储蓄利润法Java MySQL循环”;在“;,java,mysql,Java,Mysql,储蓄利润法 public void saveProfit() throws SQLException { ObservableList<Bread> bread = FXCollections.observableArrayList(); Connection conn = null; PreparedStatement ps = null; Statement statement = null; ResultSet resultSet = n
public void saveProfit() throws SQLException {
ObservableList<Bread> bread = FXCollections.observableArrayList();
Connection conn = null;
PreparedStatement ps = null;
Statement statement = null;
ResultSet resultSet = null;
try {
conn = DriverManager.getConnection ("jdbc:mysql://localhost:3306/bakery", "root", "a3756421");
statement = conn.createStatement();
resultSet = statement.executeQuery("SELECT * FROM bread");
while (resultSet.next()) {
Bread newBread = new Bread(
resultSet.getString("breadName"),
resultSet.getString("breadType"),
resultSet.getString("breadFlavour"),
resultSet.getInt("breadStock"),
resultSet.getInt("breadPrice"));
newBread.setBreadId(resultSet.getInt("breadId"));
bread.add(newBread);
}
for(Bread b : bread){
String sql = "insert into best5(pname, profit) values (?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1,b.getBreadName());
ps.setInt(2, b.getBreadPrice()*b.getBreadStock());
}
for(Bread b : bread){
String sql = "insert into worst5(pname, profit) values (?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1,b.getBreadName());
ps.setInt(2, b.getBreadPrice()*b.getBreadStock());
}
}
}
面包桌
create table bread (
breadId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
breadName VARCHAR(30),
breadType VARCHAR(30),
breadFlavour VARCHAR(30),
breadStock INT,
breadPrice DOUBLE,
imageFile VARCHAR(100));
最佳5表
create table best5 (
id INT not null primary key auto_increment,
pname VARCHAR(30),
profit INT);
worst5表基本相同,但名称不同
因此,我试图将
插入循环到best5(pname,price)值(?,)
中,以存储来自bread表的数据。但是,看起来只有面包表的第一行存储到best5表中,其余的被忽略。我做错了什么?我不熟悉javafx和MySQL。请纠正我的错误。这与fx有什么关系(除了有一个ObservableList)?我想我必须包括它,只要它有JavaFX的特性。我不这么认为:在解决sql问题之前使用一个简单的列表,然后在ui中使用ObservableList。如果发现有一个部分与observable/ui相关,则发布一个带有fx标签的新问题(以及一个演示出错原因的问题:)注意,称为“价格”的东西很少是十进制以外的东西。而且很少需要存储派生数据
create table best5 (
id INT not null primary key auto_increment,
pname VARCHAR(30),
profit INT);