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

Java 如何检查sql语句是否已准备好执行?,java,sql,jdbc,Java,Sql,Jdbc,如何检查语句是否可以在代码中执行?如果txtFirstName.getText()为空,则不会设置第二个参数 String sql = "INSERT INTO Employees (id, firstName, lastName, adress, phone, email, photo, comments) VALUES (?, ?, ?, ?, ?, ?, ?, ?)"; PreparedStatement statement = database.connectio

如何检查语句是否可以在代码中执行?如果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();
如果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();
是的,会的;它将被设置为空字符串。这对于这个特定的查询和表结构是否有效超出了JDBC的范围


您需要提前单独检查您的约束条件,然后进行调用或不进行调用。

您需要一个
else
条件来指定如果
txtFirstName
与模式不匹配时该怎么办,例如:

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

这将防止代码执行错误的
preparedstatement
,并抛出带有相应错误消息的
异常。

在sql语句之前设置if语句。并更改它,使其在为空时不会执行。您还应该检查自动增量列的使用。database.users.size()+1将随着时间的推移导致重复。请使用异常句柄在数据库上创建适当的(检查)约束,然后处理数据库服务器发出的任何错误信号