Mat*_*att 3 java sql postgresql quoted-identifier
我正在尝试将netbeans连接到我的postgresql数据库.连接似乎有效,因为我只是连接时没有任何错误或异常,getCatalog()等方法也返回正确的答案.
但是当我尝试运行一个简单的SQL语句时,我得到错误"错误:关系"TABLE_NAME"不存在",其中TABLE_NAME是我在数据库中存在的任何一个表.这是我的代码:
Statement stmt = con.createStatement();
ResultSet rs;
String query = "SELECT * FROM clients";
rs = stmt.executeQuery(query);
Run Code Online (Sandbox Code Playgroud)
我在想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");
Run Code Online (Sandbox Code Playgroud)
a_h*_*ame 11
我怀疑你使用双引号创建表,例如使用"Clients"大写或小写字符的其他组合,因此表名现在区分大小写.
这句话是什么?
SELECT table_schema, table_name
FROM information_schema.tables
WHERE lower(table_name) = 'clients'
Run Code Online (Sandbox Code Playgroud)
返回?
如果返回的表名不是小写,则在引用它时必须使用双引号,如下所示:
String query = "SELECT * FROM \"Clients\"";
Run Code Online (Sandbox Code Playgroud)