不捕获SQL异常的安全性

时间:2014-04-25 17:14:54

标签: mysql sql jdbc exception-handling sqlexception

假设我有一个程序将电子邮件地址放入数据库中,其中email属性是主键。 如果我有一个重复的电子邮件地址,我可以通过两种方式处理它。

1)运行“从表中选择电子邮件”查询。如果电子邮件当前在那里,请不要添加它。
2)不要检查表中是否有电子邮件。 catch(SQLException e),但不打印堆栈跟踪,只需跳过它。这样,如果我插入一个副本就会有效地忽略它。

当使用方法1时,我只执行一个简单的选择查询(没有连接或任何花哨的东西),因此性能不是一个很大的问题。但是,如果我想优化性能,方法2是否可行,安全的方式来做到这一点? 因此,不是每次都运行“选择...”,而是添加它。

跳过例外有没有安全问题?

Java示例(使用JDBC):

try {
    String sql = "insert into emails values(?)";
    PreparedStatement pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, email);
    pstmt.execute();
    return true;
}

catch(SQLException e) {
    // e.printStackTrace(); // skip; don't print out error
    return false;
}

0 个答案:

没有答案