首页 > 解决方案 > SQLException: 错误: "\" 处或附近的语法错误

问题描述

我想将 ma 数据库中的表列表转换为 String。我已经连接数据库,但是当我尝试使用 Postgres "\dt" 函数时,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;
        }
    }
}

标签: javasqlpostgresqlpsql

解决方案


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

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

推荐阅读