PostgreSQL,Java:如何在没有代码位置信息的情况下打印 RAISE EXCEPTION 消息?
PostgreSQL, Java : How to print jast the RAISE EXCEPTION message without info about the place in the code?
这是我的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() 拆分异常消息并打印所需内容。
这是我的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() 拆分异常消息并打印所需内容。