2014-02-08 66 views
-2

我有一個JFrame,其中包含一個帶有3個字段的表單,其中一個是名稱字段,另一個是房屋號和郵政編碼字段,用於查找客戶詳細信息。Java中的自定義SQL異常錯誤消息

當輸入正確的信息時,這工作正常,並顯示我想要它在JTable內。但是,如果其中一個字段輸入錯誤且信息未找到,是否可以顯示自定義錯誤消息?

此刻出現的錯誤是:'ResultSet定位不正確,或許您需要再打下一個。'是否有可能在沒有找到信息的情況下自定義此場景的消息,而不必爲發生錯誤的其他場景丟失SQL異常?

+0

定製的SQLException您能不能告訴你相關的代碼? – Bhushan

+0

您可以始終使用異常鏈接機制來引發新異常(可能是特定於應用程序的異常),並將「SQLException」附加到該異常鏈接機制上。 – chrylis

+0

@Bhushan我不認爲這是必要的,所有我想要的是一個異常,我可以添加到捕獲(SQLException錯誤)顯示錯誤信息沒有找到時,代碼本身工作正常,所以不需要顯示它 – John

回答

2

我想你想是這樣的:

ResultSet rs = pstmt.executeQuery(); 
rs.first(); 
System.out.println(rs.getString("MY_COLUMN_NAME")); 

您收到此錯誤,因爲你在呼喚rs.next()rs.first()如您在評論中說,即使是在沒有resultset數據。

因此,不要嘗試下面的代碼來避免ResultSet not positioned properly, perhaps you need to call next.'異常。

String myCustomMsg=""; //You can return this variable as custom message. 
try 
{ 
    Connection con = GET_CONNECTION_HERE; 
    PreparedStatement pstmt = con.prepareStatement("QUERY HERE"); 
    ResultSet rs = pstmt.executeQuery(); 
    if(rs.next())// This will make sure that if there is no data, don't read the ResultSet 
    { 
     System.out.println(rs.getString("MY_COLUMN_NAME")); 
     myCustomMsg = "Ok"; 
    } 
    else 
     myCustomMsg ="No Data found!"; 
} 
catch(SQLException sqle) 
{ 
    sqle.printStackTrace(); 
    myCustomMsg ="YOUR CUSTOM MESSAGE HERE...."; 
} 
+0

謝謝,你明白我想要的東西,而不用把代碼放好,好的! – John

+0

@John不用客氣。 – Bhushan

1

你可以這樣

import java.sql.SQLException; 


public class SqlException extends SQLException{ 

    public SqlException(String message){ 

     super(message); 
    } 
    public static void main(String[] args) throws SqlException { 

     throw new SqlException("name not found .!?"); 

    } 

}