【问题标题】:Custom SQL Exception Error message in JavaJava 中的自定义 SQL 异常错误消息
【发布时间】:2014-02-08 12:28:08
【问题描述】:

我有一个 JFrame,其中包含一个包含 3 个字段的表单,一个是名称字段,一个是房屋编号和邮政编码字段,用于查找客户详细信息。

当输入正确的信息时,这可以正常工作,并在 JTable 中显示我想要的内容。但是,如果其中一个字段输入错误并且找不到信息,是否可以显示自定义错误消息?

目前出现的错误是:'ResultSet没有正确定位,也许你需要调用next。'是否可以在找不到信息的情况下为该场景自定义消息,而不必完全丢失其他发生错误的场景的 SQL 异常?

【问题讨论】:

  • 可以展示一下你的相关代码吗?
  • 你总是可以使用异常链机制来抛出一个新的异常(可能是一个特定于应用程序的异常)并将SQLException作为原因附加到它。
  • @Bhushan 我认为没有必要,我想要的只是一个异常,我可以添加到 catch (SQLException err) 以在找不到信息时显示错误,代码本身可以完美运行但是,所以不需要显示它
  • 此消息表明存在必须修复的编程错误。你不应该得到这样的例外。异常信息非常清楚。如果您需要更多帮助,请发布您的代码以及异常的完整堆栈跟踪。
  • next() 上的ResultSet 调用结果分配给一个布尔变量,然后在继续之前检查它的值。如果是false,则发送您喜欢的任何消息。

标签: java sql postgresql resultset sqlexception


【解决方案1】:

我猜你正在尝试类似的东西:

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

您收到此错误是因为您在调用 cmets 中所说的 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....";
}

【讨论】:

  • 谢谢你,不用我贴代码你就明白我想要什么了,太好了!
【解决方案2】:

你可以像这样自定义 SQLException

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 .!?");

    }

}  

【讨论】:

    猜你喜欢
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    • 2016-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    相关资源
    最近更新 更多