本示例向您展示如何使用CallableStatement.wasNull()方法调用来查看最后一个OUT参数是否具有SQL值NULL。
package org.nhooo.example.jdbc; import java.sql.Connection; import java.sql.CallableStatement; import java.sql.DriverManager; import java.sql.Types; import java.sql.SQLException; public class WasNullExample { private static final String URL = "jdbc:mysql://localhost/nhooo"; private static final String USERNAME = "root"; private static final String PASSWORD = ""; public static void main(String[] args) { try (Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD)) { // 准备调用sored过程 String query = "call GetProductByPrice2(?, ?)"; CallableStatement cb = connection.prepareCall(query); // 设置输入参数 cb.setDouble(1, 40d); // 注册OUT参数 cb.registerOutParameter(2, Types.VARCHAR); // 执行查询 cb.executeQuery(); // 获取OUT参数值 cb.getString(2); // 检查最后一个OUT参数的值是否为SQL NULL。 // 仅在调用a之后,才应调用此方法 //吸气方法 否则,没有价值可用于 // 确定它是否为空。 if (cb.wasNull()) { System.out.println("Product has an SQL NULL value"); } else { System.out.println("Product: " + cb.getString(2)); } } catch (SQLException e) { e.printStackTrace(); } } }
这是我们在上面的示例中调用的存储过程脚本。
DELIMITER ;; DROP PROCEDURE IF EXISTS GetProductByPrice2;; CREATE PROCEDURE GetProductByPrice2(IN product_price DECIMAL, OUT product_name VARCHAR(50)) BEGIN SELECT NAME INTO product_name FROM products WHERE price = product_price; END;; DELIMITER ;
Maven依赖
<!-- https://search.maven.org/remotecontent?filepath=mysql/mysql-connector-java/8.0.17/mysql-connector-java-8.0.17.jar --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.17</version> </dependency>