一、JDBC简介
1、概念:
JDBC就是使用java语言操作关系型数据库的一套API。
全称:(Java DataBase Connectivity)Java数据库连接
2、关系图:
3、JDBC本质:
官方定义的一套操作所有关系型数据库的规则,即接口。
各个数据库厂商去实现这套接口,提供数据库驱动jar包(数据库驱动就是数据库的实现类)。
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。
4、JDBC的好处:
各数据库厂商使用相同的接口,java代码不需要针对不同数据库分别开发。
可随时替换底层数据库,访问数据库的Java代码基本不变。
二、JDBC入门
步骤:
1、创建工程时,导入驱动jar包
2、注册驱动
3、获取连接
4、定义sql语句
5、获取执行sql对象
6、执行sql
7、处理返回结果
8、释放资源
三、JDBC API详解
1、DriverManager(驱动管理类)
作用:
①注册驱动。
在MySQL5之后的驱动包可以省略注册驱动这个步骤。因为他会自动加载jar包中的驱动类。
Class.forName("com.jdbc.mysql.Driver")
②获取数据库连接。
方法:
getConnection(url, username, paswword)
用来获取连接数据库
2、Connection(数据库连接对象)
作用:
①获取执行SQL的对象。
②管理事务。
方法:
①获取执行SQL的对象:
createStatement()
普通执行SQL对象。返回Statement类型。
prepareStatement(sql)
预编译SQL的执行SQL对象:防止SQL注入。返回PrepareStatement类型。
prepareCall(sql)
执行存储过程的对象。返回CallableStatement类型。
②事务管理:
开启事务:
setAutoCommit(boolean autoCommit)
true为自动提交事务;false为手动提交事务,即为开启事务。
提交事务:
commit()
回滚事务:
rollback()
java中主要使用异常处理机制 try-catch 来完成事务处理。
三、Statement
作用:
①执行SQL语句
方法:
执行SQL:
executeUpdate(sql)
执行DML、DDL语句。
返回值:int类型;(1) DML语句影响的行数 (2)DDL语句执行后,执行成功也可能返回0。
execteQuery(sql)
执行DQL语句
返回值:ResultSet 结果集对象。
四、PreparedStatement(继承Statement)
作用:
①预编译SQL语句并执行:预防SQL注入问题
SQL注入:
SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
预编译功能默认是关闭的。
在获取连接时使用 useServerPrepStmts=true 来开启预编译功能。
②解决SQL注入的方法
1、获取PreparedStatement对象执行原理
2、设置参数
3、执行SQL
五、ResultSet(结果集对象)
作用:
①封装了DQL查询语句的结果(它是executeQuery(sql)的返回值类型)
②获取查询结果
方法:
获取查询结果:
next()
(1)将光标从当前位置向前移动一行 (2)判断当前行是否位有效行。
返回值:boolean类型; true 有效行,当前行有数据 ;false 无效行,当前行没有数据。
xxx getXxx(参数)
获取数据
xxx:数据类型
格式:int getInt(参数);String getString(参数)
参数:
int:列的编号,从1开始。
String:列的名称。
使用步骤:
1、游标向下移动一行,并判断该行是否有数据:next()
2、获取数据:getXxx(参数)