java connection 可以有多个statement 吗,JDBC多线程多个statement共享同一个connection
对于mysql测试案例
package 使用同一个connection;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String[] args) {
String urlString = "";// 数据库连接命令
String usr = "meepo";// 用户名
String passwd = "meepo";// 密码
String driverString = "com.mysql.jdbc.Driver";// 连接驱动命令
urlString = "jdbc:mysql://" + "localhost:5030";
try {
Class.forName(driverString).newInstance();
} catch (InstantiationException | IllegalAccessException
| ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Connection connection = null;
try {
connection = DriverManager.getConnection(urlString, usr, passwd);
connection.createStatement().execute("use test;");
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ExecutorService executorService = Executors.newCachedThreadPool();
for (int i = 0; i < 1000000; i++) {
try {
final Statement statement = connection.createStatement();
executorService.execute(new Runnable() {
int k = 10;
@Override
public void run() {
// TODO Auto-generated method stub
try {
for (int j = 0; j < 109; j++) {
statement.executeUpdate("update debug set email='fuck"
+ Thread.currentThread() + new Integer(k++).toString()
+ "' where filename='item0';");
}
//while (resultSet.next()) {
//System.out.println(resultSet.getString(2));
//}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
对于mysql而言在其jdbc接口中已经提供了同步方法多个线程共享同一个connection没有问题。而在实际使用中设计到事物时会出现这种情况:
由于jdbc的事物与一个connection关联在一起,因此当一个statment执行完毕需要提交时,如果调用了connection.commit()或者rollback的话可能会导致其他线程中不希望提交的事物提交
java connection 可以有多个statement 吗,JDBC多线程多个statement共享同一个connection相关推荐
- java面试题3 牛客:下面有关jdbc statement的说法错误的是
下面有关jdbc statement的说法错误的是? A JDBC提供了Statement.PreparedStatement 和 CallableStatement三种方式来执行查询语句, 其中 S ...
- java中statement对象的作用_java中Statement 对象
1.创建Statement对象 建立了到特定数据库的连接之后,就可用该连接发送 SQL 语句.Statement 对象用 Connection 的方法 createStatement 创建,如下列代码 ...
- java.net.ConnectException: Call From s150/192.168.109.150 to s150:8020 failed on connection excepti
启动hive遇到连接的问题: Exception in thread "main" java.lang.RuntimeException: java.net.ConnectExce ...
- jdbc mysql查询显示图片_在实现JDBC时如何显示存储引擎-MySQL CONNECTION查询?
使用SELECT ENGINE显示存储引擎名称.让我们首先创建一个表-create table DemoTable -> ( -> Id int NOT NULL AUTO_INCREME ...
- 【学习笔记】JDBC:java提供的专门操纵数据库的API JDBC驱动程序的类型 JDBC常用的类与接口
JDBC技术 JDBC的全称是Java DataBase Connectivity,是一套面向对象的应用程序接口,指定了统一的访问各种关系型数据库的标准接口,JDBC是一种底层的API,因此访问数据库 ...
- spring 是如何保证一个事务内获取同一个Connection?
前言 关于Spring的事务,它是Spring Framework中极其重要的一块.前面用了大量的篇幅从应用层面.原理层面进行了比较全方位的一个讲解.但是因为它过于重要,所以本文继续做补充内容:Spr ...
- java web之数据库的连接(使用JDBC连接sql server)
一.安装JDBC驱动程序 二.加载驱动程序并建立连接对象 1.sql server的连接代码: 2.关于这里的用户名和密码 3.解决在用sa登录时可能出现的问题 三.建立数据库 四.在servlet中 ...
- java web之数据库的连接(使用JDBC连接sql server 2017)
一.安装JDBC驱动程序 二.加载驱动程序并建立连接对象 1.sql server的连接代码: 2.关于这里的用户名和密码 3.解决在用sa登录时可能出现的问题 三.建立数据库 四.在servlet中 ...
- java.sql.SQLException: Streaming result set com.mysql.jdbc.RowDataDynamic@44f16719 is still active.
sqoop 导入mysql 表时,出现以下异常: 19/07/28 07:44:44 ERROR manager.SqlManager: Error reading from database: ja ...
最新文章
- 自动驾驶车辆何时实现?近期不会实现的五大原因
- 【网址收藏】k8s PLEG介绍及不健康问题排查
- python数据清洗实例_python 数据的清理行为实例详解
- java复制文件_java多种文件复制方式以及效率比较
- jMatter:提高开发速度10倍!
- 源码mysql5.7安装过程_mysql5.7 源码安装步骤
- 根据数组建立平衡二叉搜索树
- 不同用户同时并发测压_程序猿学GO:并发
- XsdGen:通过自定义Attribute与反射自动生成XSD
- maven pom.xml指定jdk
- 利用Scrapy爬取拉勾网某职位信息
- Win10环境下使用VS2015编译PJProject
- 计算机信息安全专业代码0839,全国网络空间安全学科专业分布
- 分布式机器学习联邦学习论文阅读笔记(持续更新)
- Vuepress 如何引入百度统计和谷歌统计
- windows软链接
- 铁矿石需求量matlab代码,铁矿石期货市场分析
- 如何适配处理iphoneX底部的横条 ?(转)
- 处理器仿存带宽_存储系统性能 - 带宽计算
- Commvault发布横向扩展一体机 矛头对准Rubrik和Cohesity