Java知识整理——JDBC
一、JDBC概述
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。
通过JDBC将应用程序与数据库相连,从而对数据库进行增删查改等操作。
二、JDBC的API
2.1 JDBC的连接
jdbc建立连接的五大步骤:
- 加载(注册)数据库
- 建立链接
- 执行SQL语句
- 处理结果集
- 关闭数据库
@Test
public void demo1() {
Connection conn = null;
Statement stmt = null;
ResultSet resultSet = null;
try {
//1、加载驱动
//DriverManager.registerDriver(new Driver());
Class.forName("com.mysql.cj.jdbc.Driver");
//2、获得连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/数据库名?serverTimezone=UTC&characterEncoding=utf-8", "用户名" ,"密码");
//3、创建执行SQL语句的对 象,并且执行SQL
//3.1 创建执行sql的对象
String sql = "SELECT id,name,price,desp FROM goods WHERE price<3500";
stmt = conn.createStatement();
//3.2 执行sql语句
resultSet = stmt.executeQuery(sql);
//4、处理结果集
while(resultSet.next()) {
int id = resultSet.getInt("id");
String name = resultSet.getString("name");
float price = resultSet.getFloat("price");
String desp = resultSet.getString("desp");
System.out.println(id + " " + name + " " + price + " " + desp);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//5、释放资源
if(resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
resultSet = null;
}
if(stmt != null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;
}
}
}
2.2 DriverManager:驱动管理类
主要作用:
1、注册驱动
DriverManager .registerDriver(new Driver());
但是这种方式会导致驱动注册两次(在加载DriverManager的时候会自动注册一次)
实际开发中注册驱动会使用如下方式:
//1、加载驱动
//DriverManager.registerDriver(new Driver());
//开发中常用:
Class.forName("com.mysql.cj.jdbc.Driver");
2、获得连接
//2、获得连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/imooc?serverTimezone=UTC&characterEncoding=utf-8", "用户名" ,"密码");
Connection getConnection(String url,String username,String password);
*url写法:jdbc:mysql://localhost:3307/数据库名称
**jdbc:协议
**mysql:子协议
**localhost:主机名
**3307:端口号
*url简写:jdbc:mysql:///jdbc(数据库默认端口号是3306,如果你的数据库不是在默认端口号,最好还是写全)
2.3 Connection:连接对象
主要作用:
1、创建执行SQL语句的对象:
方法 | 作用 |
---|---|
Statement createStatement(); | 执行SQL语句,有SQL注入的漏洞存在 |
PreparedStatement prepareStatement(String sql); | 预编译SQL语句并且执行,解决SQL注入的漏洞(实际开发中用的) |
CallableStatement prepareCall(String sql) ; | 执行SQL中存储过程 |
2、进行事务的管理(保证多个操作是在同一个事务当中)
方法 | 作用 |
---|---|
setAutoCommit(boolean autoCommit) | 设置事务是否自动提交(默认自动提交) |
commit() | 事务提交 |
rollback() | 事务回滚 |
若想开启JDBC的事务,需要先将自动提交关闭,设置为false(之后再详细整理事务)
2.4 Statement:执行SQL语句
主要作用:
1、 执行SQL语句:
方法 | 作用 |
---|---|
boolean excute(String sql); | (少用)执行sql,如果执行select语句返回true,否则返回false |
ResultSet executeQuery(String sql); | (常用)执行sql中的select语句,返回表格,结果集 |
int excuteUpdate(String sql); | (常用)执行sql中的insert/update/delete语句,返回影响的行数 int 类型 , 当返回值>0时&# |