2014-12-03 72 views
0

我正在创建一个Java程序,用户将SQL命令发送到数据库。如果有一个SQL异常,例如“PRIMARY”关键字的“重复条目1”,则此消息显示在终端中,这很好。但是,我想以某种方式存储此消息并将其再次显示在程序中的其他位置,但我不太清楚如何执行此操作。这是我迄今为止所尝试的:存储Java SQL异常消息

String error; 
try 
{ 
    //etc... 
} 
catch(SQLException e) 
{ 
    error=e.getMessage(); 
} 

//somewhere later in code... 
System.out.println(error); 

每当我尝试这个,显示“null”而不是消息。我认为getMessage()是我所需要的,但显然不是。我究竟做错了什么?

回答

0

试试这个

StringWriter errors = new StringWriter(); 
try 
{ 
    //etc... 
} 
catch(SQLException e) 
{ 

    e.printStackTrace(new PrintWriter(errors)); 

} 

System.out.println(errors.toString()); 
+0

谢谢你,工作! – user1804208 2014-12-03 20:37:44

+0

@ user1804208如果您认为这有帮助,则将其标记为答案 – 2014-12-03 20:38:22

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

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