首页 > 解决方案 > MySQL循环“插入”

问题描述

saveProfit 方法

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());
        }
    }
}

面包对象

公共类面包{

private String breadName, breadFlavour, breadType;
private int breadStock, breadPrice, breadId;
private File imageFile;
private Image photo;

public Bread(String breadName, String breadType, String breadFlavour,int breadPrice, int breadStock) {
    setBreadName(breadName);
    setBreadType(breadType);
    setBreadFlavour(breadFlavour);
    setBreadPrice(breadPrice);
    setBreadStock(breadStock);
    setImageFile(new File("./src/Images/foodDefault.png"));

}

面包桌

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));

best5 表

create table best5 (
    id INT not null primary key auto_increment,
    pname VARCHAR(30),
    profit INT);

最坏的5表基本相同,名称不同。

所以,我试图循环insert into best5(pname, profit) values(?,?)存储面包表中的数据。但是,似乎只有面包表的第一行存储到 best5 表中,其余的被忽略了。我究竟做错了什么?我是 javafx 和 MySQL 的新手。请纠正我的错误。

标签: javamysql

解决方案


推荐阅读