POSTGRES SQL JAVA使用java类创建自定义类型

时间:2017-05-08 22:22:04

标签: java sql database postgresql types

<script type="text/javascript"> 
$('.product-custom-text').keyup(updateCount);
$('.product-custom-text').keydown(updateCount);

function updateCount() {
    var cs = $(this).val().length;
    $('#character_count').text(cs);
}
</script>

在该示例中,我尝试在我的数据库中创建Dimension类型。 但它不起作用。

可以创建一个具有特殊类型的java类的列吗?

或者我只能使用我的数据库知道的类型吗?

例如:

public static void main(String[] args) {
    try {
        Connection c = null;
        Class.forName("org.postgresql.Driver");
        c = DriverManager.getConnection(
                "jdbc:postgresql://localhost:5432/postgres", // db
                "postgres", // account
                "ForOnlyOneTick1" // password
        );


        Object loc = Dimension.class;
        PreparedStatement insertNew = c
                .prepareStatement("CREATE TYPE loc AS (?);");
        insertNew.setObject(1, loc);

        insertNew.executeUpdate();
        insertNew.close();

        c.close();

    } catch (Exception e) {
        //e.printStackTrace();
        System.err.println(e.getClass().getName() + ": " + e.getMessage());
    }

}

好的,但如果我需要创建一个类型,问题仍然存在:

CREATE TYPE location AS (x int, y int, z int, name VARCHAR(15));

Dimension,ListPeople,Reason是我的自定义类,其公共值是其他类。

2 个答案:

答案 0 :(得分:0)

根据此http://rob.conery.io/2014/11/03/using-custom-types-with-postgres/,您可以使用现有的基本类型创建自定义类型,您的自定义类型将类似于您的类。

答案 1 :(得分:0)

数据库对Java类一无所知。在定义数据类型时,您需要明确列出所有列。

你可以这样做:

CREATE TYPE dimension AS (x int, y int);
CREATE TYPE listpeople AS (names text[], etc.);
CREATE TYPE land AS (area dimension, people listpeople, etc.);