Jos*_*ior 1 java optimization jdbc query-optimization prepared-statement
我创建的PreparedStatement时候,我需要将答案传递给答案而不解决您的问题,请编辑以详细解释您的问题中唯一的部分.标题
是否值得为int值创建PreparedStatement?SQL查询,但是值得准备一个语句来传递int参数并在执行后关闭吗?
void delete(int key, int orElse) throws SQLException
{
try(PreparedStatement pst = this.connection.prepareStatement(
"DELETE FROM a_table WHERE the_int_primary_key=? OR random_int_field=?"
))
{
pst.setInt(1, key);
pst.setInt(2, orElse);
pst.executeUpdate();
}
}
Run Code Online (Sandbox Code Playgroud)
是否值得准备该声明?是否会增加安全性?
如果我用正常的声明做什么怎么办?这有风险吗?它会执行得更快吗?
void delete(int key, int orElse) throws SQLException
{
try(Statement stm = this.connection.createStatement())
{
stm.executeUpdate(
"DELETE FROM a_table WHERE the_int_primary_key="+key+" OR random_int_field="+orElse
);
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:这个问题是不是重复的准备好的语句显着减缓程序?因为:
PreparedStatements来自java文档:
预编译SQL语句并将其存储在PreparedStatement对象中.然后,可以使用此对象多次有效地执行此语句.
回答你的问题:是非常值得的,重要的是使用准备好的语句,这是保护你免受注入攻击(如sql注入)的最佳方法,正常的声明将无法防止这些类型的攻击,即使你制作了自己的"好"sql解析器,它可能无法抵御某些攻击.
| 归档时间: |
|
| 查看次数: |
316 次 |
| 最近记录: |