Java我如何知道表列是否可以具有null值?

在此示例中,我们将展示如何使用ResultSetMetaData.isNullable()method来确定列是否可以null。此方法返回的值在的常数来定义的整数ResultSetMetaData.columnNullable,ResultSetMetaData.columnNoNulls和ResultSetMetaData.columnNullableUnknown。

package org.nhooo.example.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class IsNullableExample {
    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)){

            Statement statement = connection.createStatement();
            ResultSet resultSet = statement.executeQuery(
                "SELECT isbn, title, published_year, price FROM books");

            // ResultSetMetaData是所有元数据相关的地方
            // 存储结果集的信息。
            ResultSetMetaData metadata = resultSet.getMetaData();
            int nullable = metadata.isNullable(1);

            // 检查列的可空状态(`isbn`)
            if (nullable == ResultSetMetaData.columnNullable) {
                System.out.println("`isbn` can have a null value.");
            } else if (nullable == ResultSetMetaData.columnNoNulls) {
                System.out.println("`isbn` does not allowed to have a " +
                    "null value.");
            } else if (nullable == ResultSetMetaData.columnNullableUnknown) {
                System.out.println("Nullability unknown.");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

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>

Maven中央