#博学谷IT学习技术支持#
目录
1.JDBC简介
1.1JDBC概念
JDBC 就是使用Java语言操作关系型数据库的一套API
全称:( Java DataBase Connectivity ) Java 数据库连接
1.2JDBC本质
官方(sun公司)定义的一套操作所有关系型数据库的规则,即接口
各个数据库厂商去实现这套接口,提供数据库驱动jar包
我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类
1.3JDBC利处
各数据库厂商使用相同的接口,Java代码不需要针对不同数据库分别开发
可随时替换底层数据库,访问数据库的Java代码基本不变
2.JDBC快速入门
1. 创建工程,导入驱动jar包
2.注册驱动
Class.forName("com.mysql.jdbc.Driver");
3. 获取连接
Connection conn = DriverManager.getConnection(url, username, password);
4.定义SQL语句
String sql = “update…” ;
5. 获取执行SQL对象
Statement stmt = conn.createStatement();
6. 执行SQL
7. 处理返回结果
8.释放资源
3.JDBC API 详解
3.1DriverManager
DriverManager(驱动管理类)作用:(1) 注册驱动 (2)获取数据库连接
3.2Connection
url:连接路径:
语法:jdbc:mysql://ip地址(域名):端口号/数据库名称?参数键值对1&参数键值对2…
示例:jdbc:mysql://127.0.0.1:3306/db1
细节: 如果连接的是本机mysql服务器,并且mysql服务默认端口是3306,则url可以简写为:jdbc:mysql:///数据库名称?参数键值对
配置 useSSL=false 参数,禁用安全连接方式,解决警告提示
3.3Statement
Statement作用: 执行SQL语句
int executeUpdate(sql):执行DML、DDL语句 返回值:(1) DML语句影响的行数 (2) DDL语句执行后,执行成功也可能返回 0
ResultSet executeQuery(sql):执行DQL 语句 返回值: ResultSet 结果集对象
3.4ResultSet
ResultSet(结果集对象)作用:
封装了DQL查询语句的结果
ResultSet stmt.executeQuery(sql):执行DQL 语句,返回 ResultSet 对象
获取查询结果
boolean next():(1) 将光标从当前位置向前移动一行 (2)判断当前行是否为有效行
返回值:
true:有效行,当前行有数据
false:无效行,当前行没有数据
使用步骤: 1.游标向下移动一行,并判断该行否有数据:next()
2.获取数据:getXxx(参数)
//循环判断游标是否是最后一行末尾
while(rs.next()){
//获取数据
rs.getXxx(参数);
}
3.5PreparedStatement
PreparedStatement作用: 预编译SQL语句并执行:预防SQL注入问题
SQL注入是通过操作输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。
PreparedStatement 好处: 预编译SQL,性能更高
防止SQL注入:将敏感字符进行转义
PreparedStatement 预编译功能开启:useServerPrepStmts=true
PreparedStatement 原理:
1.在获取PreparedStatement对象时,将sql语句发送给mysql服务器进行检查,编译(这些步骤很耗时)
2.执行时就不用再进行这些步骤了,速度更快
3.如果sql模板一样,则只需要进行一次检查、编译