Java SQL“错误:关系”表_Name“不存在”

我正在尝试将netbeans连接到我的postgresql数据库。 连接似乎有效,因为我只是连接时没有任何错误或exception,getCatalog()等方法也返回正确的答案。

但是当我尝试运行一个简单的SQL语句时,我收到错误“错误:关系”TABLE_NAME“不存在”,其中TABLE_NAME是我在数据库中存在的任何一个表。 这是我的代码:

Statement stmt = con.createStatement(); ResultSet rs; String query = "SELECT * FROM clients"; rs = stmt.executeQuery(query); 

我在想netbeans可能找不到表,因为它没有查看默认模式(public),有没有办法在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"); 

我怀疑你使用双引号创建表,例如"Clients"或其他一些大/小写字符的组合,因此表名现在区分大小写。

声明是什么

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

返回?

如果返回的表名不是小写,则在引用它时必须使用双引号,如下所示:

 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\""; String query = "SELECT * FROM Clients"; 

也许其中一个会起作用。

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

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