我正在尝试将 netbeans 连接到我的 postgresql 数据库。连接似乎有效,因为我在连接时没有收到任何错误或异常,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\"";
关于Java SQL "ERROR: Relation "表名“不存在”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5766107/