SQLException:错误:语法错误在或附近" \"

时间:2018-06-11 22:27:04

标签: java sql postgresql psql

我想在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;
        }
    }
}

1 个答案:

答案 0 :(得分:9)

\dt不是有效的SQL语法 - 它是 meta-command。您可以通过查询信息架构来执行类似的功能:

ResultSet rs = statement.executeQuery("SELECT table_name FROM information_schema.tables");