我正在创建一个Java程序,用户将SQL命令发送到数据库。当存在SQL异常时,例如"重复条目' 1'对于键' PRIMARY'",此消息显示在终端中,这很好。但是,我想以某种方式存储此消息并在程序中的其他位置再次显示它,但我不太确定如何执行此操作。这是我到目前为止所尝试的内容:
String error;
try
{
//etc...
}
catch(SQLException e)
{
error=e.getMessage();
}
//somewhere later in code...
System.out.println(error);
每当我尝试这个时," null"显示而不是消息。我认为getMessage()是我需要的,但显然它不是。我做错了什么?
答案 0 :(得分:0)
试试这个
StringWriter errors = new StringWriter();
try
{
//etc...
}
catch(SQLException e)
{
e.printStackTrace(new PrintWriter(errors));
}
System.out.println(errors.toString());
答案 1 :(得分:0)
您的代码似乎正确无误。 getMessage()应该给你正确的错误信息。您的异常为空
还有其他原因try{
//
}catch(SQLException e){
e.getMessage() // will return message like "No suitable driver found for ..."
e.getErrorCode() // should give you SQL Error code
}
请记住getMessage()不仅会返回SQL错误,还会返回java.sql包中出来的错误。例如"找不到合适的驱动程序......"实际上它不是来自数据库,而是来自java.sql包。
您要连接哪个数据库?你能在这里更新实际代码吗?