我有一个JFrame,其中包含一个包含3个字段的表单,一个是name字段,另一个是house no和postcode字段,用于查找客户详细信息。
当输入正确的信息时,这可以正常工作,并在JTable中显示我想要的内容。但是,如果其中一个字段输入错误且找不到信息,是否可以显示自定义错误消息?
此时出现的错误是:'ResultSet未正确定位,也许您需要调用next。'是否可以在找不到信息时自定义此方案的消息,而不必为发生错误的其他方案完全丢失SQL异常?
答案 0 :(得分: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....";
}
答案 1 :(得分:1)
您可以像这样自定义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 .!?");
}
}