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

JDBC-语句,PreparedStatement,CallableStatement和缓存

呼延化
2023-03-14
问题内容

我想知道有什么区别,何时使用StatementPreparedStatementCallableStatement

每种方法的最佳实践和典型方案是什么?


问题答案:

声明与PreparedStatement

  1. 使用PreparedStatement可以提高性能,但它取决于数据库。

  2. 使用PreparedStatement可以避免SQL注入。PreparedStatement如何避免或阻止SQL注入?

  3. 使用setInt,setString和prepareStatement更好地进行类型检查,其中,您只需保持附加到主SQL的语句即可。

类似帖子:

声明和PreparedStatement之间的区别

CallableStatement-Java答案,用于跨所有数据库访问StoredProcedures。

类似帖子

有了PreparedStatement和Callable,您已经有了缓存,缓存本身也是一个大话题,您不想做所有这些,而是​​看ehcache

您几乎总是应该首选PreparedStatement而不是Statement

如果必须对StoredProcedure进行操作,则只有一个选项CallableStatement。



 类似资料:
  • 主要内容:1. Statement对象,2. PreparedStatement对象,3. CallableStatement对象,关闭CallableStatement对象当获得了与数据库的连接后,就可以与数据库进行交互了。 JDBC ,和接口定义了可用于发送SQL或PL/SQL命令,并从数据库接收数据的方法和属性。 它们还定义了有助于在Java和SQL数据类型的数据类型差异转换的方法。 下表提供了每个接口定义,以及使用这些接口的目的的总结。 接口 推荐使用 用于对数据库进行通用访问,在运行时

  • 我一直在读一些较新的JDBC连接池(如Tomcat)不支持客户端语句池。我已经读到,这是因为大多数JDBC驱动程序都维护自己的语句缓存。然而,我不认为PostgreSQL会发生这种情况。 我说的对吗?如果是这样,我应该使用一个连接池来缓存准备好的语句,以获得最佳的批插入性能吗? 谢谢

  • 问题内容: 我想知道每个连接可以同时打开多少个语句或preparedstatement。我真的不明白,如果执行多个语句并检索到多个结果集,它将如何工作。具有详细信息的资源链接将很有帮助。 谢谢 问题答案: 可以在同一连接上创建和使用多个语句,但是一次只能在一个语句上创建和使用 一个 结果集。如果您通过同一条语句创建/打开另一个,则任何先前打开的结果集将被隐式关闭,从而导致任何尝试访问它的“ Res

  • 我读到MySQL不支持服务器端查询计划缓存。所以如果我想使用PreparedStatements来获得性能优势,我能做的就是在JDBC连接中启用语句缓存。因此,根据文档,它将允许缓存每个连接基础上准备好的语句。 与如果MySQL有服务器端查询计划缓存相比,JDBC连接的PreparedStatement缓存的性能增益是什么?因此,如果PreparedStatement确实在物理连接的缓存中找到,这

  • 问题内容: 我有一个需要从我的Java程序调用的功能。我曾经将参数传递给存储的proc。我正在使用oracle瘦驱动程序(在Web逻辑服务器中根据相关的jndi条目配置)。此存储的proc没有任何OUT值。此存储的proc接受一个数字值,并根据接收到的值在db中进行很多更新。 我得到一个连接对象,然后在循环中调用此存储的proc(20次传递20个数字)。当我直接从oracle客户端调用此存储的pr

  • 问题内容: 我在where子句中使用带有时间戳的PreparedStatement: 当我在客户端计算机上具有不同的时区时,得到的结果是不同的。这是Oracle jdbc中的错误吗?或正确的行为? Oracle数据库版本为10.2,并且我尝试使用Oracle jdbc瘦驱动程序版本10.2和11.1。 参数为时间戳,我希望途中不会进行任何时间转换。数据库列类型为DATE,但我还使用TIMESTAM