JDBC以及连接池

OS:题外话,作为一个码龄三年的Java程序员,00后,算不得太优秀,平常自己学习笔记都在wolai上,也是时候加入CSDN大家族了,哈哈哈。咳咳,拙劣见解,学习笔记,广纳百川,凑合看吧。

言归正传

概念: Java Data Base Connectivity java语言数据库连接

本质:官方(sun公司,现在的oracle公司)定义的一套操作所有关系型数据库的规则(即接口),各个数据库厂商去实现这套接口,实现了这套接口的代码就是数据库驱动。我们使用数据库驱动jar包可以使用jdbc编程,但是真正执行的代码是驱动jar包里面的实现类

快速入门(步骤)

1.导入数据库驱动jar包 mysql-connector-java-5.1.39-bin

*复制驱动jar包放到项目libs目录下

*Add as library

2.注册驱动

3.获取数据库连接对象 connection 对象

4.定义sql(如果是预编译,则需要给占位符赋值 setString(问号位置从1开始,实际参数))

5.获取执行sql语句的对象 statement,preparedStatement

6.执行sql,接收返回结果

7.业务处理...

8.释放资源

对象详解

1.DriverManager —-驱动管理对象

①注册驱动(告诉程序应该使用哪一个数据库jar包,面向接口编程)static void registerDriver(Driver driver)//注册与给定的驱动程序 DriverManager 。代码中使用:Class.forName("com.mysql.jdbc.Driver");//将类加载进内存,但我们后续并没有直接使用这个类,那么加载进内存肯定是有关静态代码块执行了方法,在类加载时执行,参考以下图片。所以真正意义上的注册驱动任然是registerDriver,但是我们这样写是简化的②获取数据库链接方法:DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbc_use?characterEncoding=UTF-8&serverTimezone=UTC", "root", "root");参数:url:数据库规则路径,username:用户名 ,password:密码小tips:如果数据库为本机,且端口默认为3306,则路径可以简写为jdbc:mysql:///jdbc_use

2.Connection —-连接对象①获取sql执行对象(3、5对象)②管理事务开启事务 void setAutoCommit(boolean autoCommit)//将此连接的自动提交模式设置为给定状态。 将状态设置为false,及开启事务。提交事务 void commit()//提交事务回滚事务 void rollback()//回滚事务

3.Statement —— 执行sql对象①执行方法boolean execute(String sql) //了解,执行任意sqlint executeUpdate(String sql)//一般用于DML的语句和DDL语句(DQL查询语句 DML更新语句DDL数据定义语言(数据库、表的操作) DCL授权语句),返回值是影响的行数ResultSet executeQuery(String sql)//执行DQL语句

4.ResultSet —— 结果集对象 ,封装查询结果①boolean next() :游标向下移动一行,并且判断是否是最后一行末尾。使用时搭配while循环来使用②getXxx(参数):获取某类型的数据:例如 String getString("name"),int getInt("id") 等参数可以传递String 或者int ,传String则获取列名称,传int则获取列下标,从1开始

5.PreparedStatement —-预编译sql执行对象,参数使用?占位符修饰①sql注入问题 在拼接sql时,有一些sql关键字参与字符串的拼接,造成安全性问题。

JDBC控制事务:

事务的概念:一个包含多个步骤的业务操作,如果这个业务操作事务管理,要么同时成功,要么同时失败

操作:connection对象

提交事务—setAutoCommit(boolean state) 设置false开启手动提交,一般是获取连接后设置

回滚事务rollback();一般是在catch中,进行回滚

提交事务commit();一般是代码全部操作完之后提交事务
连接池

其实就是一个容器(集合),存放数据库连接的容器

当系统初始化之后,容器将被创建。容器回申请一些申请对象。当用户来访问数据库时,直接从容器中获取连接对象而不是从底层申请资源。并且用完之后并不会销毁连接,而是归还给容器。

节约资源、用户访问高效

实现:

1.标准接口:DataSource javax.sql包下的

①获取连接方法:getConnection();

②归还连接:如果connection对象是从连接池中获取的,那么该对象的close()方法则不会关闭连接,而是归还连接。

2.一般我们不去实现这个接口,由数据库厂商来提供

①:C3P0:数据库连接技术(偏老)

②:Druid:数据库连接技术,由阿里巴巴提供

C3P0使用步骤:

①:导入jar包

②:定义配置文件:名称必须叫做c3p0.properties 或者c3p0-config.xml

驱动会自己去找这两个配置文件,文件应该放在类路径下,src或者resources下

③:创建核心对象—数据库连接池对象 comboPooleDataSource,没有传值用的是默认的,传了具体name,Datesources db = new comboPooleDataSource("jdbcUse")则会使用jdbcUse的连接池

④:获取连接:getConnection()

Druid 连接池使用

1.导入jia包 druid-1.0.9.jar (下载地址:https://repo1.maven.org/maven2/com/alibaba/druid/

2.定义配置文件

特点:是properties形式的配置文件

        可以是任意名称,可以放在任意目录

3.获取数据库连接池对象:通过工厂类获取 DruidDatasourceFactory

4.获取连接 getConnection()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值