如何在SQL数据库上更新一个对象变量?

问题描述 投票:0回答:1

我已经设置好了使用此代码块将对象信息保存到SQL数据库的位置:

public boolean add(PizzaOrder aOrder) {
    boolean success = false;
    PreparedStatement statement;
StringBuilder sqlStr = new StringBuilder();
int rowCount;

    if (aOrder != null && dbConnect != null && dbConnect.isConnected()) {
        try {
            sqlStr.append("INSERT INTO ");
            sqlStr.append(ORDER_TABLE);
            sqlStr.append(" (firstName, lastName, size, cheese, sausage, ham, total)");
            sqlStr.append(" VALUES (?,?,?,?,?,?,?)");

            statement = dbConnect.getConnection().prepareStatement(sqlStr.toString(), Statement.RETURN_GENERATED_KEYS);
           statement.setString(1, aOrder.getFirstName());
           statement.setString(2, aOrder.getLastName());
           statement.setString(3, aOrder.getPizzaSize());
           statement.setBoolean(4, aOrder.getCheese());
           statement.setBoolean(5, aOrder.getSausage());
           statement.setBoolean(6, aOrder.getHam());
           statement.setDouble(7, aOrder.getTotal());

            rowCount = statement.executeUpdate();
            if (rowCount == 1) {
                ResultSet rs = statement.getGeneratedKeys();
                if(rs.next()) {
                    aOrder.setId(rs.getInt(1));
                }
                success = true;
            }
        }
        catch  (SQLException e) {
            String prompt = e.getMessage() 
                        + " cannot save pizza order information for " 
                        + aOrder.getFullName();
            JOptionPane.showMessageDialog(null, prompt, "SQL Server Error: Insert", JOptionPane.ERROR_MESSAGE);
        }
    }
    else if (aOrder == null) {
        throw new NullPointerException("Pizza Order object is null");
    }
    else {
        throw new IllegalStateException("Database is not connected");

    }
    return success;
}

我正在尝试通过更新服务器上的对象来更改总变量。我现在没有错误弹出,但是我的对象信息没有任何变化。这是我的代码,带有更新块:

public boolean update(PizzaOrder aOrder)  {
    boolean success = false;
    PreparedStatement statement = null;
StringBuilder sqlStr = new StringBuilder();
int rowCount;

    if(aOrder != null && dbConnect != null && dbConnect.isConnected()) {
        try {
            //TODO create the SQL and prepared statements to update an order in the database
            rowCount = aOrder.getId();
            sqlStr.append("UPDATE ");
            sqlStr.append("pizzaorder ");
            sqlStr.append("SET firstName = ?, lastName = ?, size = ?, cheese = ?, sausage = ?, ham = ?, total = ? WHERE id = ").append(rowCount);

            statement = dbConnect.getConnection().prepareStatement(sqlStr.toString());
            statement.setString(1, aOrder.getFirstName());
            statement.setString(2, aOrder.getLastName());
            statement.setString(3, aOrder.getPizzaSize());
            statement.setBoolean(4, aOrder.getCheese());
            statement.setBoolean(5, aOrder.getSausage());
            statement.setBoolean(6, aOrder.getHam());
            statement.setDouble(7, aOrder.getTotal());

            rowCount = statement.executeUpdate();
        }
        catch  (SQLException e) {
            String prompt = e.getMessage() 
                            + " cannot update pizza order information for " 
                            + aOrder.getFullName();
            JOptionPane.showMessageDialog(null, prompt, "SQL Server Error: Update", JOptionPane.ERROR_MESSAGE);
        }
    }
    else if (aOrder == null) {
        throw new NullPointerException("Pizza Order object is null");
    }
    else {
        throw new IllegalStateException("Database is not connected");

    }
    return success;
}

我设置为在运行更新代码块时仅更改总变量。因此,我试图再次调用所有变量,希望它会改变总数。

我在此更新代码块中得到相同的结果:

public boolean update(PizzaOrder aOrder)  {
    boolean success = false;
    PreparedStatement statement = null;
StringBuilder sqlStr = new StringBuilder();
int rowCount;

    if(aOrder != null && dbConnect != null && dbConnect.isConnected()) {
        try {
            rowCount = aOrder.getId();
            sqlStr.append("UPDATE ");
            sqlStr.append("pizzaorder ");
            sqlStr.append("SET total = ? WHERE id = ").append(rowCount);

            statement = dbConnect.getConnection().prepareStatement(sqlStr.toString());
            statement.setDouble(1, aOrder.getTotal());

            rowCount = statement.executeUpdate();
        }
        catch  (SQLException e) {
            String prompt = e.getMessage() 
                            + " cannot update pizza order information for " 
                            + aOrder.getFullName();
            JOptionPane.showMessageDialog(null, prompt, "SQL Server Error: Update", JOptionPane.ERROR_MESSAGE);
        }
    }
    else if (aOrder == null) {
        throw new NullPointerException("Pizza Order object is null");
    }
    else {
        throw new IllegalStateException("Database is not connected");

    }
    return success;
}
java mysql
1个回答
0
投票

我发现我的问题是我的代码中的其他地方阻止了更新。在这种情况下,这是用于更新mySQL数据库的代码:

try {
            //TODO create the SQL and prepared statements to update an order in the database
            sqlStr.append("UPDATE ");
            sqlStr.append("pizzaorder ");
            sqlStr.append("SET total = ? WHERE id = ?");

            statement = dbConnect.getConnection().prepareStatement(sqlStr.toString());
            statement.setDouble(1, aOrder.getTotal());
            statement.setInt(2, aOrder.getId());

            rowCount = statement.executeUpdate();
        }
© www.soinside.com 2019 - 2024. All rights reserved.