当前位置: 首页 > 面试题库 >

我是否应该对Java中的所有数据库插入都使用PreparedStatements?

戚翰飞
2023-03-14
问题内容

在将变量插入Java中的数据库之前,建议使用哪种转义变量的方法?

据我了解,我可以使用PreparedStatement.setString()来转义数据,但是,如果我不打算再次运行相同的查询,则PreparedStatement似乎不切实际。.是否有一种更好的方式来做而不准备每个查询?


问题答案:

是的,对所有内容使用准备好的语句。

  1. 他们被解析一次。

  2. 他们不受SQL注入攻击的影响。

  3. 它们是一个更好的设计,因为您必须考虑您的SQL及其用法。

如果您认为它们只使用过一次,那么您就不会看大图了。有一天,您的数据或应用程序将更改。

编辑。

为什么准备好的语句会让您考虑一下SQL?

  • 当您汇编一个字符串(或简单地执行文本的文字块)时,您并不是在创建一个新的PreparedStatement对象。您只是在执行SQL-可以很随意地完成。

  • 当您必须创建(并保存)a时PreparedStatement,您只需要考虑封装,责任分配等问题。语句的准备是进行任何SQL处理之前的有状态事件。

额外的工作很小,但并不微不足道。这就是促使人们开始考虑ORM和数据缓存层以及诸如此类的东西以优化其数据库访问的原因。

使用Prepared语句,数据库访问变得更轻松,更有意。



 类似资料:
  • 下面是我的代码和我到目前为止所做的事情。 如何在单击#OrderSave按钮后使用ajax将表中的所有数据插入数据库? $(“#code”).bind(“blur keypress”,function(event){event.preventdefault();if(event.keycode===13 event.type=='blur'){var vals=$('#code').val();$

  • 问题内容: 有人可以为我指出一份良好的初学者指南,以安全地运行部分由用户输入构成的SQL查询吗?我正在使用Java,但是语言无关的指南也很好。 期望的行为是,如果有人在GUI中键入类似 数据库应将其视为文字字符串,并安全地存储它而不会删除任何表。 问题答案: 您肯定要使用PreparedStatement。他们很方便。这是一个例子。

  • 问题内容: 有什么方法可以在JSON中嵌套对象,因此我不必从所有内容中制成数组?为了能够无错误地解析我的对象,我似乎需要这样的结构: 如果我将此对象提取到一个名为“结果”的变量中,则必须像这样访问嵌套的对象: 和 这对我来说似乎很笨拙和多余,如果可能的话,我希望: 和 但是,当一切都是数组时,如何直接使用对象键?在我困惑和未受教育的头脑中,这样的事情似乎更合适: 我可能在这里误解了一些基本知识,但

  • 问题内容: 我正在用Java建模电源子系统。一个简单的SQLite数据库包含一组行可替换单元(LRU)以及它们之间的连接。我正在编写Power Model API,以使用DDD模式和存储库简化数据存储的查询。 我正在寻找合适的Java集合来对查询结果进行建模。LRU连接流中有一些特殊情况需要建模: 最初,有一个具有多个端口(<= 16)的配电单元(PDU),用于向下游LRU供电。 功率流中的典型连

  • 假设我有这行代码 Spring数据的留档说明了“findById”函数: 抛出:IllegalArgumentException-如果id为空。 在我的例子中,它不可能为null,所以我是否仍然应该添加try-catch块来处理发生错误的情况?此外,是否应该尝试/抓住它并进行相应处理?还是我应该让它被扔掉 @ControllerAdvice/异常处理程序处理它并将错误返回给用户?

  • 我正在尝试在数据库中插入乌尔都语文本,但只有“?????”插入其中。但在本地主机上工作得很好。当我在Cent-OS服务器上部署war时,在远程服务器上面临的问题。MySQL server 5.5.15正在Cent-OS服务器上运行。