Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/393.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Matcher.quoteReplacement与preparedstatement的对比_Java_Mysql_Sql_Jdbc_Code Injection - Fatal编程技术网

Java Matcher.quoteReplacement与preparedstatement的对比

Java Matcher.quoteReplacement与preparedstatement的对比,java,mysql,sql,jdbc,code-injection,Java,Mysql,Sql,Jdbc,Code Injection,在我的项目中,我必须根据传递的表创建insert语句。 所以我有两个选择 1) 编写preparedstatement并批量运行 2) 创建插入表值(..)、(..)、(..) 如果我使用Matcher.quoteReplacement()来转义这些值,我想知道为什么我更喜欢(1)而不是(2) 提前感谢Matcher。quoteReplacement不是用来引用SQL字符串的,因此您不能确定是否可以使用它避免SQL插入。但是,即使您有一个有效的引用功能,出于以下几个原因,准备好的语句仍然会更好:

在我的项目中,我必须根据传递的表创建insert语句。 所以我有两个选择 1) 编写preparedstatement并批量运行 2) 创建插入表值(..)、(..)、(..)

如果我使用Matcher.quoteReplacement()来转义这些值,我想知道为什么我更喜欢(1)而不是(2)


提前感谢Matcher。quoteReplacement不是用来引用SQL字符串的,因此您不能确定是否可以使用它避免SQL插入。但是,即使您有一个有效的引用功能,出于以下几个原因,准备好的语句仍然会更好:

  • 您不必担心忘记引用输入
  • 你不想走捷径,也不想引用你“知道”的安全值
  • 数据库可以缓存执行计划,以避免解析具有不同参数的类似SQL查询,从而提高性能
  • 代码更具可读性(IMHO)