JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系型数据库提供统一访问,它是由一组用Java语言编写的类和接口组成的
本质是sun公司提供的一套接口, 各个数据库厂商来实现。实现的东西我们称为"驱动jar包", 屏蔽java连接不同数据库的差异。
JDBC的使用步骤:
- 1,导入jar包
- 2.注册驱动:DriverManager
- 3.获取连接(建桥):DriverManager获取到Connection
- 4.通过桥, 得到执行者对象:通过Connection获取到Statement
- 5.告Statement要执行的sql语句, 执行sql
- 6.得到结果,处理结果:通过Statement获取ResultSet
- 7.释放资源
各个JDBC的API:
- DriverManager注册驱动
- 提供了静态方法registerDriver(Driver driver) (不推荐)因为会注册两次, 造成内存的浪费
- Class.forName(“com.mysql.jdbc.Driver”)(推荐)因为Driver加载到内存, 静态代码块就会执行, 而在静态代码块已经注册过驱动了
- 获取连接:静态方法: getConnection(url,username,password);
url:"jdbc:mysql://ip地址:端口/数据库的名字 "
省略写法:如果是连接本机的3306的数据库-->"jdbc:mysql:///数据库的名字 "
username:连接数据库的用户名 如: root
password:连接数据库的密码
-
Connection:连接对象的作用
-
获取执行者对象
Statement createStatement();返回执行者对象,这个对象有注入攻击的风险
PreparedStatement preparedStatement(String sql);返回执行者预编译对象,参数是一条执行的SQL语句,sql语句如果有参数的话, 请用?号替代 -
事务管理
需要在所有操作之前开启事务:setAutoCommit(boolean is);
参数是true则关闭事务管理
参数是false则开启事务管理,开启事务管理需要调用方法提交事务,否则对数据库的数据没有影响,且只针对本连接有效,不会影响其他链接。
需要在所有操作之后提交事务:调用commit();
在catch语句中有异常就回滚事务:调用rollback();
注意:事务操作需要保证是同一条连接 -
释放资源 close();
-
注意:频繁的创建和销毁连接对象比较耗资源应当采用连接池管理连接对象,项目运行速度和提高性能。
-
PreparedStatement预编译执行者对象
-
int excuteUpdate();执行增删改操作,返回影响行数
-
ResultSet excuteQuery();执行查询,返回结果集对象
-
setXxx(Xxx xx):给?号占位符赋值·, 而?号的编号从1开始,建议记住一个方法setObject(?的编号, 值)
-
ResultSet:结果集对象查询语句才有
-
boolean next();移动到下一行, 并且判断是否有数据
-
Xxx getXxx(String 列名);获取数据
-
close(); 释放资源
链接池
数据库连接是一种关键的、有限的、昂贵的资源,这一点在多用户的网页应用程序中体现得尤为突出。对数据库连接的管理能显著影响到整个应用程序的伸缩性和健壮性,影响到程序的性能指标。数据库连接池正是针对这个问题提出来的。
数据库连接池负责分配、管理和释放数据库连接,它允许应用程序重复使用一个现有的数据库连接,而不是再重新建立一个。这项技术能明显提高对数据库操作的性能。
作用: 解决频繁创建连接和销毁;连接的过程。
注意: 在使用连接池, 不仅要导入连接池的包, 驱动jar包也要引用 ,因为获取连接只有驱动jar包能办得到DriverManager
市面上流行的两种链接池:
- C3P0使用步骤
- 1.导包(两包)
- 2 配置:名字必须叫c3po-config