4

netbeans を postgresql データベースに接続しようとしています。接続しただけではエラーや例外が発生せず、getCatalog() などのメソッドも正しい回答を返すため、接続は機能しているようです。

しかし、単純な SQL ステートメントを実行しようとすると、「エラー: リレーション "TABLE_NAME" が存在しません」というエラーが表示されます。TABLE_NAME は、データベースに存在するテーブルのいずれかです。これが私のコードです:

    Statement stmt = con.createStatement();

    ResultSet rs;

    String query = "SELECT * FROM clients";

    rs = stmt.executeQuery(query);

デフォルトのスキーマ (パブリック) を検索していないため、netbeans がテーブルを見つけられない可能性があると考えていましたが、Java でスキーマを設定する方法はありますか?

編集:私の接続コード。データベース名は Cinemax です。ステートメント コードを省略しても、エラーは発生しません。

    String url = "jdbc:postgresql://localhost:5432/Cinemax";
    try{

    try {
        Class.forName("org.postgresql.Driver");
    } catch (ClassNotFoundException cnfe) {
        System.err.println("Couldn't find driver class:");
        cnfe.printStackTrace();
    }

    Connection con = DriverManager.getConnection( url,"postgres","desertrose147");
4

4 に答える 4

11

"Clients"たとえば、大文字/小文字の他の組み合わせを使用して二重引用符を使用してテーブルを作成したと思われるため、テーブル名の大文字と小文字が区別されるようになりました。

声明は何をしますか

 SELECT table_schema, table_name
 FROM information_schema.tables 
 WHERE lower(table_name) = 'clients'

戻る?

返されたテーブル名が小文字でない場合は、次のように参照するときに二重引用符を使用する必要があります。

String query = "SELECT * FROM \"Clients\"";
于 2011-04-24T11:56:51.507 に答える
0

CoolBeans の提案に加えて、関連するデータベースまたはスキーマに対する権限を持たない別のユーザーとしてデータベースに接続している可能性もあります。接続文字列を表示できますか?

于 2011-04-23T20:19:28.417 に答える