存储Java SQL异常消息

时间:2014-12-03 20:24:10

标签: java sql sql-server

我正在创建一个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()是我需要的,但显然它不是。我做错了什么?

2 个答案:

答案 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包。

您要连接哪个数据库?你能在这里更新实际代码吗?