如何检查sql语句是否已准备好执行?

时间:2017-03-23 10:49:41

标签: java sql jdbc

如何检查语句是否可以在我的代码中执行?如果txtFirstName.getText()为空,则不会设置第二个参数。

String sql = "INSERT INTO Employees (id, firstName, lastName, adress, phone, email, photo, comments) VALUES (?, ?, ?, ?, ?, ?, ?, ?)";
            PreparedStatement statement = database.connection.prepareStatement(sql);
            statement.setString(1, database.users.size() + 1 + "");
            if (txtFirstName.getText().matches(""))
                statement.setString(2, txtFirstName.getText());
            statement.setString(3, txtLastName.getText());
            statement.setString(4, txtAdress.getText());
            statement.setString(5, txtPhone.getText());
            statement.setString(6, txtEmail.getText());
            statement.setString(7, txtPhotoURL.getText());
            statement.setString(8, txtComment.getText());

            statement.executeUpdate();

2 个答案:

答案 0 :(得分:0)

  

如果txtFirstName.getText()为空,则不会设置第二个参数。

是的,它会;它将被设置为空字符串。这对于这个特定的查询和表结构是否有效超出了JDBC的范围。

您需要提前单独检查约束,然后再拨打电话。

答案 1 :(得分:0)

如果else与模式不匹配,则需要txtFirstName条件来指定要执行的操作,例如:

if (txtFirstName.getText().matches("")){
    statement.setString(2, txtFirstName.getText());
}else {
    throw new IllegalArgumentException("Invalid name pattern");
}

这将阻止代码执行错误preparedstatement并抛出exception并显示相应的错误消息。