3

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

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

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

这是我的代码:

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 语句是正确的。但是当我运行它时,它不会创建表。如果我把字符串替换成selectsql,就没有问题了。

有人知道我的案子吗?

提前致谢 ..

4

3 回答 3

5

您可能想像这样使用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 语句执行更新。

另外,请确保您的 DDL 语句是正确的,我不知道 PostgreSQL 的确切“如果不存在”语法

于 2012-07-24T08:26:33.600 回答
2

这一行:

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

是无效的。

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

也请查看一些示例检查文档

于 2012-07-24T08:33:32.937 回答
0

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

于 2018-12-26T07:20:59.317 回答