PostgreSQL,Java:如何在没有代码中位置信息的情况下打印 RAISE EXCEPTION 消息?

问题描述

这是我的java方法

    public static boolean addEmployee(Employee employee) {
        String sql = "SELECT addemployee(?,?,?);";

        try (Connection conn = connect();
             PreparedStatement ps = conn.prepareStatement(sql)) {
            ps.setString(1,employee.getFirstName());
            .
            .
            .
            ps.execute();
            return true;
        } catch (sqlException e) {
            showMessageDialog(null,e.getMessage());
            System.out.println(e.getMessage());
        }
        return false;
    }

这是我的 Postgresql 函数

CREATE OR REPLACE FUNCTION addEmployee(. . .)
    RETURNS BOOLEAN AS
$$
DECLARE
    existsCheck BOOLEAN;
    iddd        INTEGER;
BEGIN
    SELECT EXISTS(SELECT ed.username
                  FROM employee_data ed
                  WHERE ed.username = usernameAdd)
    INTO existsCheck;
    IF (SELECT existsCheck = FALSE) THEN
       .
       .
       .
    ELSE
        RAISE EXCEPTION 'Nazwa użytkownika jest zajęta!';
    END IF;
    RETURN TRUE;
END ;
$$

当抛出异常时,我得到这样一个消息对话框: [图片]

1

当我尝试注册并且我输入的用户名已经存在时收到错误消息。所以我收到警报“用户名被某人占用,请尝试其他人”(屏幕截图上的第一行)。而且我只想打印这些单词,屏幕截图上没有第二行。

如何去掉第二行?

解决方法

使用 String.split() 拆分异常消息并打印所需内容。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...