java - 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() 拆分异常消息并打印所需内容。
推荐阅读
- regex - 如何用 awk 替换 .env 文件中的值?
- sql - 从源表中获取当前 SQL 中使用的所有列的方法
- c# - 在 C# 表单中擦除图形?
- r - 如何将列表转换为数字
- angular - 我的 Angular 8 NPM 包没有找到自己的资产
- javascript - 同一行不同列(jQuery)
- java - 未获取 Firebase 数据库生成的唯一 ID
- c# - 1 + 2 - 3 * 4 / 5 的数学结果错误。得到 1 而不是 0.6
- botframework - 如何将机器人安装到微软团队(nodejs)
- mobile - 如何使用 Appium 自动化已安装的 ios 应用程序