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ステートメントが正しいと確信しています。しかし、これを実行すると、テーブルが作成されません。文字列をSQLに置き換えればselect問題ありません。

誰かが私のケースについて考えを持っていますか?

前もって感謝します ..

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 ステートメントにはexecuteUpdateが必要です。

また、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 に答える