数据库---JDBC的解析
一、JDBC是什么?
JDBC:Java Database Connectivity(Java数据库连接池)。指定了统一的访问各种关系型数据库的标准接口-----桥梁作用。
功能:【与数据库建立连接】【向数据库发送SQL请求】【处理从数据库返回的结果】
步骤如下:A. 加载并注册数据库驱动----【数据库不同驱动链接不同】
Class.forName("com.mysql.cj.jdbc.Driver");
Connection conn=DriverManager.getConnection(String url,String username,String password);
stat=conn.createStatement();
int num1=sta.executeUpdate(sql); 或者 res = stat.executeQuery(sql);
stat.close();//这里并非最好的关闭方式
res.close();
conn.close();
关闭流的顺序---推荐反着来----先关ResultSet---Statement----Connection---推荐显式关闭---并关闭前判断是否为空
原因是:关闭Conneciton,且Statement若不手动关闭,将由GC机制自动关闭,且再关闭前Statement对象和ResultSet对象将被占用。
若在自动关闭前-----数据库连接池的连接数量达到最大允许值--此时将会抛异常。
二、如何更好的优化JDBC?
dpcpconfig.properties #连接设置
driverClassName=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/demo?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8
username=root
password=
#初始化连接
initialSize=
#最大连接数量
maxAcitve=
#最大空闲连接
maxIdle=10
通过配置文件读取数据源得到连接
public static DataSource ds=null;
static {
Properties prop=new Properties();//新建配置文件对象
InputStream in = new Dbcp2().getClass(). //通过类加载器找到文件路劲,读配置文件
getClassLoader().getResourceAsStream("dbcpconfig.properties");
prop.load(in);//以输入流的形式加载到配置对象中
ds=BasicDataSourceFactory.createDataSource(prop);}//创建数据源
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">
jdbc:mysql://localhost:3306/demo?useUnicode=true& characterEncoding=UTF-8& useSSL=false& serverTimezone=GMT%2B8
</property>
<property name="user">root</property>
<property name="password"></property>
<property name="checkoutTimeout"></property>
<property name="initialPoolSize"></property>
<property name="maxIdleTime"></property>
<property name="maxPoolSize"></property>
<property name="minPoolSize"></property>
<property name="maxStatements"></property>
</default-config>
<named-config name="itcast">
<property name="driverClass">com.mysql.cj.jdbc.Driver</property>
<property name="jdbcUrl">
jdbc:mysql://localhost:3306/demo?useUnicode=true& characterEncoding=UTF-8& useSSL=false& serverTimezone=GMT%2B8
</property>
<property name="user">root</property>
<property name="password"></property>
<property name="initialPoolSize"></property>
<property name="maxPoolSize"></property>
</named-config>
</c3p0-config> 通过配置数据源得到数据库连接连接池连接
public static DataSource ds = null; static {
ComboPooledDataSource cpds=new ComboPooledDataSource("itcast");
ds=cpds;
}

QueryRunner qr=new QueryRunner(DButils.getDataSource());//得到数据源(得到连接)并创建执行器对象
List list=(List)qr.query(sql, new BeanListHandler<User>(User.class));
数据库---JDBC的解析的更多相关文章
- java连接mysql数据库详细步骤解析
java连接mysql数据库详细步骤解析 第一步:下载一个JDBC驱动包,例如我用的是:mysql-connector-java-5.1.17-bin.jar 第二步:导入下载的J ...
- 数据库——JDBC
数据库--JDBC 数据库优点:降低存储数据的冗余度: 更高的数据一致性: 存储的数据可以共享: 可以建立数据库所遵循的标准: 便于维护数据完整性: 能够实现数据的安全性: 建立数据库: 数据库的存储 ...
- 常用数据库 JDBC URL 格式
一 常用数据库 JDBC URL 格式 1 sqLite 驱动程序包名:sqlitejdbc-v056.jar 驱动程序类名: org.sqlite.JDBC JDBC URL: jdbc:sqli ...
- Oracle数据库字符集问题解析
Oracle数据库字符集问题解析 经常看到一些朋友问ORACLE字符集方面的问题,我想以迭代的方式来介绍一下.第一次迭代:掌握字符集方面的基本概念.有些朋友可能会认为这是多此一举,但实际上正是由于对相 ...
- BMP是在Bean中完成对数据库JDBC的各种调用
BMP是在Bean中完成对数据库JDBC的各种调用 CMP是由EJB容器自动完成对数据库的操作 会话Bean主要处理业务逻辑
- Java应用程序连接数据库--JDBC基础
Java应用程序连接数据库--JDBC基础 Java应用程序连接数据库–JDBC基础 <!-- MySQL驱动,连接数据库用,由数据库厂商提供 --> <dependency&g ...
- canal 基于Mysql数据库增量日志解析
canal 基于Mysql数据库增量日志解析 1.前言 最近太多事情 工作的事情,以及终身大事等等 耽误更新,由于最近做项目需要同步监听 未来电视 mysql的变更了解到公司会用canal做增量监 ...
- 牛客网数据库SQL实战解析(51-61题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(41-50题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
随机推荐
- HLog工作原理
- linux为内核新增系统调用
1.编写hello.c文件,实现系统调用执行函数,如: asmlinkage long sys_helloworld(void){ printk( "helloworld!"); ...
- spring中的ResponseEntity理解
参考: https://blog.csdn.net/weixin_37869477/article/details/82762976 https://blog.csdn.net/sswqzx/arti ...
- centos 重新编译php
说明:系统原来通过源码安装了php7.1.0.网上找了很多彻底删除原来php的办法,执行命令php -v PHP版本信息始终都在,说明方法都无用.自己大胆做了如下尝试,成功重新编译php 查找php ...
- 19-10-26-F
ZJ一下: T1码了暴力但是并没有开出来身高的神奇性质…… T2打模拟,但是只摸了卅分 T3不会,码了一个测试点分治.10分 TJ一下: T1. 发现身高范围在$[140,200]$时,直接去重跑$\ ...
- ArcGIS Data Interoperability 的使用(1)
今天在用OneMap的时候,发现OneMap中注册过后的WFS服务无法在skyline中加载,于是想知道OneMap注册后的WFS服务与server中的原生态WFS服务有啥区别.首先想到是否能在Arc ...
- camtasia Studio 7 的使用
最近领导给了个任务,要把我们的三维应用功能做个视频,好带出去宣传.通过搜索,发现大家都说camtasia Studio好用,很快在网上找到了,与大家分享链接: http://pan.baidu.com ...
- 深入浅出 Java Concurrency (18): 并发容器 part 3 ConcurrentMap (3)[转]
在上一篇中介绍了HashMap的原理,这一节是ConcurrentMap的最后一节,所以会完整的介绍ConcurrentHashMap的实现. ConcurrentHashMap原理 在读写锁章节部分 ...
- oracle创建新的连接(表空间?数据库?)
一.创建用户名密码 create user username identified by password --username 是用户名:password 是密码 二.给用户附权.撤权 gra ...
- 015-WebDriver API
1. 从定位元素开始 8种元素定位方法 id find_element_by_id( ) name find_element_by_name( ) tag find_element_by_tag_na ...