java - JDBC - 创建/准备好的语句 : What happens and are they concurrent?

标签 java sql database jdbc

创建语句和准备语句: 在这两种情况下,服务器实际上是在什么时候联系的? 当您调用 createStatement() 或 prepareStatement() 时是否联系了数据库服务器? 设置准备好的语句的值时是否联系了数据库? 我假设当您调用执行时肯定有通信?

此外,假设该语句只运行一次,所以优化在 prepare 语句中不那么普遍,它是否等同于创建一个语句并执行? vs 准备、设置然后执行?

你能同时使用这些方法吗?如果我有一个由数据库支持的网站怎么办?我可能同时有很多并发连接。创建、准备和执​​行语句是否允许并发调用(如不崩溃)?它实际上会同时执行还是内部同步的方法?

根据上面的答案,如何优化并发访问最好?我知道您可以使用连接池。但是,如果单个连接允许并发执行,有什么好处?

最佳答案

只是您所要求的一部分,但一次只能有一个线程使用 Connection/(Prepared)Statement/ResultSet。通常,它是同一个线程,但您也可以安排一些交接不便的事情。想要并发做事是很常见的事情,所以人们经常将数据库连接合并在一起以节省重新连接时间。看看DBCP ;它是一个连接池,用于执行某些操作,例如运行访问数据库的网站。

关于java - JDBC - 创建/准备好的语句 : What happens and are they concurrent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22586840/

相关文章:

java - Spring 3.1 和 Hibernate 4 : "HibernateException: No Session found for current thread" When calling DAO method from unit test

java - 为 Java Swing 创建合成图像输出的最佳实践

sql - 确定带时间戳记录的每月值

mysql - 三、Yii中sql语句中的and条件

java - 为什么我无法在 NetBeans 之外打开我的 JAR?

java - 建模游戏难度

mysql - 如何向此查询添加计算 AVG 的第二个联接?

javascript - 使用 better-sqlite3 创建新表

MySQL 选取所有30天未登录的用户

mysql - 如何向包含前一列百分比的 select 语句添加额外列