假设我有一个程序将电子邮件地址放入数据库中,其中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;
}