gpt4 book ai didi

java - JDBC Sqlite 尝试获取可空列

转载 作者:行者123 更新时间:2023-11-30 07:37:37 25 4
gpt4 key购买 nike

我正在尝试从 Java 中的 SQLite 数据库 检索所有可为空的列。

我不知道为什么当有两列具有 not null 属性时,JDBC 返回只有主键为 Not NULL .

CREATE TABLE `univDB` (
`x` INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
`FirstColumn` TEXT NOT NULL,
`SecondColumn` TEXT
);

当我运行以下代码时:

    ResultSet rs = stmt.executeQuery("SELECT * FROM "+table);

for (int i=1; i<= rs.getMetaData().getColumnCount(); i++) {
System.out.println("NULLABLE column "+i+" "+rs.getMetaData().isNullable(i));
if (ResultSetMetaData.columnNoNulls == rs.getMetaData().isNullable(i)) {
System.out.println("Column Not Null "+rs.getMetaData().getColumnName(i));
}
}

我知道 xDB 中唯一不可为 null 的列,但也应该有 FirstColumn

最佳答案

我对 sqlite 版本 sqlite-jdbc-3.8.11.2 也有同样的问题

您可以尝试这个(来源:Documentation):

try {
DatabaseMetaData meta = dbConn.getMetaData();
ResultSet rs_columns = meta.getColumns(null, null, table, null);
while(rs_columns.next()) {
String columnName = rs_columns.getString(4); // Columnname
String nullable = rs_columns.getString(18); // Nullable returns smth like "NO" or "YES"
System.out.println("clmn: " + columnName);
System.out.println("IsNullable: " + nullable);
}

// OR directly
String columnName = "A_CLMM_NAME";
ResultSet rs_column = meta.getColumns(null, null, table, columnName);
if(rs_column.next()) {
String nullable = rs_column.getString(18); // Nullable
}
} catch (Exception e) {
e.printStackTrace();
}

关于java - JDBC Sqlite 尝试获取可空列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35172550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com