难以在HSQLDB中获取PK

时间:2011-06-10 06:29:04

标签: java hsqldb

我正在使用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", "");
    }
}

1 个答案:

答案 0 :(得分:1)

使用此:

rs = meta.getPrimaryKeys(null, null, "SURVEY");

在标准SQL中,列,表或其他对象的名称将全部变为大写,除非在SQL语句中使用它时在名称周围使用双引号。

最新版本目前为2.2.3,并且在版本2.0.0上有错误修复和改进