【发布时间】:2019-02-03 03:43:04
【问题描述】:
我正在使用 JDBC,并且我使用 postgresql 创建了一个简单的表:
create table bank (
bank_id int,
bank_name varchar(40),
bank_address varchar(80),
user_id int,
user_first_name varchar(40),
user_surname varchar(40),
user_phone varchar(12),
primary key(bank_id, user_id)
);
问题是,当我检查 bank_id 是否唯一时,我得到了 true(当我期待 false 时,ofc)。这是我的函数的代码,用于检查表中的列是否唯一:
private static boolean checkIfUnique(Connection conn, String tableName,
String columnName) {
try {
DatabaseMetaData meta = conn.getMetaData();
ResultSet rs = meta.getIndexInfo(null, null, tableName, true, true);
while(rs.next()) {
if (rs.getString(9).equals(columnName)) {
return true;
}
}
return false;
} catch (Exception e) {
System.err.println("Exception: " + e + "\n" + e.getMessage());
}
return false;
}
我不确定我做错了什么。任何建议都会有所帮助。谢谢。
【问题讨论】:
-
不相关,但是:您应该确保在完成后关闭 ResultSet(在
finally块中)。 -
@a_horse_with_no_name 或使用 try-with-resources
-
感谢您的帮助。这完美地工作。出于好奇,未关闭的 ResultSet 对象会发生什么?
标签: java database postgresql jdbc