我正在使用hsqldb进行单元测试(非生产)。这些测试需要访问表的主键,但我似乎无法让它工作。顺便说一下,我使用的是最新版本2.0.0
我创建了一个小片段来重新创建问题。任何反馈都将非常感谢
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Test {
public static void main(String[] args) throws Exception {
Connection conn = getHSQLConnection();
System.out.println("Got Connection.");
Statement st = conn.createStatement();
st.executeUpdate("create table survey (id int,name varchar (20), PRIMARY KEY (id) );");
ResultSet rs = null;
DatabaseMetaData meta = conn.getMetaData();
rs = meta.getPrimaryKeys(null, null, "survey");
String pk = null;
if (rs.next()) {
pk = rs.getString("COLUMN_NAME");
System.out.println("getPrimaryKeys(): columnName=" + pk);
}
else {
System.out.println("Couldn't get the PK");
}
st.close();
conn.close();
}
private static Connection getHSQLConnection() throws Exception {
Class.forName("org.hsqldb.jdbcDriver");
System.out.println("Driver Loaded.");
String url = "jdbc:hsqldb:data/test1";
return DriverManager.getConnection(url, "sa", "");
}
}
答案 0 :(得分:1)
使用此:
rs = meta.getPrimaryKeys(null, null, "SURVEY");
在标准SQL中,列,表或其他对象的名称将全部变为大写,除非在SQL语句中使用它时在名称周围使用双引号。
最新版本目前为2.2.3,并且在版本2.0.0上有错误修复和改进