我想在ma数据库中获取一个表到String的列表。我已经连接数据库,但是当我尝试使用Postgres" \ dt" function,getTables()抛出org.postgresql.util.PSQLException: ERROR: syntax error at or near "\".
问题是什么?一个简单的反斜杠报告为错误
JDK(将\dt
视为正则表达式。)
import java.sql.*;
import java.util.ArrayList;
public class DataConnect {
Statement statement = null;
Connection connection = null;
DataConnect() {
try {
Class.forName("org.postgresql.Driver");
connection = DriverManager.getConnection("jdbc:postgresql://localhost:5432/postgres", "", "");
statement = connection.createStatement();
} catch (ClassNotFoundException e) {
e.printStackTrace();
System.out.append("Driver is missing");
end();
} catch (SQLException e) {
e.printStackTrace();
System.out.append("Wrong order");
end();
}
}
ArrayList<String> getTables() {
ArrayList tables = new ArrayList();
try {
ResultSet rs = statement.executeQuery("\\dt");
while (rs.next()) {
String databaseName = rs.getString("Name");
}
return tables;
} catch (Exception e) {
e.printStackTrace();
end();
return null;
}
}
}
答案 0 :(得分:9)
\dt
不是有效的SQL语法 - 它是psql meta-command。您可以通过查询信息架构来执行类似的功能:
ResultSet rs = statement.executeQuery("SELECT table_name FROM information_schema.tables");