在Java代码中创建PostgreSQL表

3

我有一段使用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个回答

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语句,您需要使用executeUpdate方法。

此外,请确保您的DDL语句正确,我不知道PostgreSQL中确切的"if not exists"语法。


2
这行代码的意思是:
conn = DriverManager.getConnection
                       ("jdbc:postgresql:"POS_DB","postgres", "123456");

无效。

您在POS_DB之前有一个",这里不应该有它。

要查看一些示例,请查看文档


0

PostgreSQL 10 - 'user' 是一个关键字,因此不适合用作表名。您需要选择一个不是保留字的名称。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接