在java代码中创建postgresql表

时间:2012-07-24 08:20:12

标签: java postgresql

我在java中有一个与postgreSQL数据库连接的代码。

现在,我希望当它连接到数据库时,我也会创建数据库表。

但我的问题是,它不会创建数据库,我也不知道是什么问题。

这是我的代码:

Statement st = null;
        ResultSet rs = null;
        try{
            Class.forName("org.postgresql.Driver");
            System.out.println("connect");
            } catch (ClassNotFoundException cnfe){
              System.out.println("Could not find the JDBC driver!");
              System.exit(1);
            }
        Connection conn = null;
        try {
            //database location, database user, database password
            conn = DriverManager.getConnection
                           ("jdbc:postgresql:"POS_DB","postgres", "123456");
            st = conn.createStatement();
            String qs = "CREATE TABLE IF NOT EXISTS user(user_id SERIAL NOT NULL PRIMARY KEY,username varchar(225) NOT NULL UNIQUE,password varchar(225),islogged varchar(10))";
            String qs1 = "SELECT * FROM test";
        rs = st.executeQuery(qs);

            System.out.println("connect");
             } catch (SQLException sqle) {
               System.out.println("Could not connect");
               System.exit(1);
             }

我确信在创建表时我的sql语句是正确的。但是当我运行它时,它不会创建表。如果我将字符串替换为select sql,则没有问题。

有没有人对我的案子有所了解?

提前感谢..

3 个答案:

答案 0 :(得分:4)

你可能想要像PreparedStatement这样使用:

PreparedStatement ps = connection.prepareStatement("CREATE TABLE IF NOT EXISTS user(user_id SERIAL NOT NULL PRIMARY KEY,username varchar(225) NOT NULL UNIQUE,password varchar(225),islogged varchar(10))");
ps.executeUpdate();
ps.close();

对于DML和DDL语句,您需要 executeUpdate

另外,请确保您的DDL语句正确,我不知道PostgreSQL的确切“if not exists”语法

答案 1 :(得分:2)

这一行:

conn = DriverManager.getConnection
                       ("jdbc:postgresql:"POS_DB","postgres", "123456");

无效。

在POS_DB之前你有"不应该在这里。

看一些例子,请查看documentation

答案 2 :(得分:0)

postgresql 10-'user'是关键字,因此不是表的好选择。您将需要一个非保留字的名称。