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 回答
2

您可以检查以下可能性:

String query = "SELECT * FROM clients";
String query = "SELECT * FROM CLIENTS";
String query = "SELECT * FROM \"clients\"";
String query = "SELECT * FROM \"CLIENTS\"";
String query = "SELECT * FROM Clients";

也许其中之一会起作用。

于 2013-08-14T08:02:34.160 回答
0

除了 CoolBeans 的建议外,您还可能以对相关数据库或模式没有权限的其他用户身份连接到数据库。你能显示连接字符串吗?

于 2011-04-23T20:19:28.417 回答
0

有趣的是我遇到了和我刚开始使用netbeans和postgressql db一样的事情,并且在注意到问题是我在postgressql中的表在我的命名约定中我和我的jdbc查询语句中有大写字母后,错误得到了修复因为 INSERT 找不到表。但是在重命名我在数据库中的表并修复列名之后,我很高兴。希望能帮助到你。

于 2018-07-06T07:42:10.813 回答