1.JDBC基本概念
概念:Java DataBase Connectivity Java 数据库连接 (Java语言操纵数据库)
Jdbc本质:
各个数据库厂商去实现这套接口,提供数据库驱动jar包。我们使用接口编程,真正执行的代码
是驱动jar包中的实现类。
2.快速入门
步骤:
-
导入驱动jar包
-
注册驱动
-
获取数据库的连接对象 Connection
-
定义sql语句
-
获取执行sql语句的对象 Statement
-
执行sql,接收返回结果
扫描二维码关注公众号,回复: 9107088 查看本文章 -
处理结果
-
释放资源
package cn.imut;
import java.sql.*;
//Jdbc快速入门
public class JdbcDemo1 {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
//1.导入驱动jar包
//2.注册驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//3.获取数据库连接对象
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zl?useSSL=true&&serverTimezone=UTC", "root", "1870535196");
//4.定义sql语句
String sql = "select * from user";
//5.获取执行sql的对象
Statement statement = conn.createStatement();
//6.执行sql
ResultSet resultSet = statement.executeQuery(sql);
//7.处理结果
while (resultSet.next()) {
System.out.println("id=" + resultSet.getObject("id"));
System.out.println("username=" + resultSet.getObject("username"));
System.out.println("password=" + resultSet.getObject("password"));
System.out.println("name=" + resultSet.getObject("name"));
System.out.println("==============================");
}
//8.释放资源
statement.close();
conn.close();
}
}
3.jdbc中各个接口和类
-
DriverManager:驱动管理对象
功能:
-
注册驱动
-
获取数据库连接
-
-
Connection:数据库连接对象
功能:
-
获取执行sql的对象
-
管理事务
-
开启事务 setAutoCommit(boolean autoCommit):参数false,开启事务
-
提交事务 commit()
-
回滚事务 rollback()
-
-
-
Statement:执行sql对象
功能:
-
执行sql
-
Boolean execute (String sql); :可以执行任意的sql
-
int executeUpdate (String sql); : 执行DML(i,u,d),DDL(c,a,d)语句
-
ResultSet executeQuery(String sql); : 执行DQL(s)语句
-
-
联系:
-
user表 添加一条记录
-
修改记录
-
删除记录
-
-
-
ResultSet:结果集对象,封装查询结果
boolean next():游标向下移动一行,判断当前行是否是最后一行末尾
getxxx(参数):获取数据
xxx:代表数据类型 如: int getInt(), String getString()
参数:
1.int:列编号
2.String:列名称
注意:
使用步骤:
1.游标向下移动一行
2.判断是否有数据
3.获取数据
while (resultSet.next()) {
System.out.println("id=" + resultSet.getObject("id"));
System.out.println("username=" + resultSet.getObject("username"));
System.out.println("password=" + resultSet.getObject("password"));
System.out.println("name=" + resultSet.getObject("name"));
System.out.println("==============================");
}
练习:
将user表封装为对象,打印
User.java
package cn.imut.domain;
public class User {
private int id;
private String username;
private String password;
private String name;
public User(int id, String username, String password, String name) {
this.id = id;
this.username = username;
this.password = password;
this.name = name;
}
public User() {
}
JdbcUser.java
package cn.imut.jdbc;
import cn.imut.domain.User;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
public class JdbcUser {
public static void main(String[] args) {
List<User> list = new JdbcUser().findAll();
System.out.println(list);
}
public List<User> findAll() {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
List<User> list = null;
try {
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/zl?useSSL=true&serverTimezone=UTC", "root", "1870535196");
String sql = "select * from user";
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
User user = null;
list = new ArrayList<>();
while (rs.next()){
int id = rs.getInt("id");
String username = rs.getString("username");
String password = rs.getString("password");
String name = rs.getString("name");
user = new User();
user.setId(id);
user.setUsername(username);
user.setPassword(password);
user.setName(name);
list.add(user);
}
} catch (ClassNotFoundException | SQLException e) {
e.printStackTrace();
} finally {
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return list;
}
}
抽取Jdbc工具类:JdbcUtils
package cn.imut.utils;
import java.io.FileReader;
import java.io.IOException;
import java.net.URL;
import java.sql.*;
import java.util.Properties;
//Jdbc工具类
public class JdbcUtils {
private static String driver;
private static String url;
private static String username;
private static String password;
static {
try {
//1.创建Properties集合类
Properties pro = new Properties();
//2.加载文件
ClassLoader classLoader = JdbcUtils.class.getClassLoader();
URL res = classLoader.getResource("jdbc.properties");
String path = res.getPath();
System.out.println(path);
pro.load(new FileReader(path));
//3.获取数据,赋值
driver = pro.getProperty("driver");
url = pro.getProperty("url");
username = pro.getProperty("username");
password = pro.getProperty("password");
//4.注册驱动
Class.forName(driver);
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
}
//获取连接对象
public static Connection getConnection() throws SQLException {
return DriverManager.getConnection(url,username,password);
}
//资源释放
public static void close(Statement stmt, Connection conn) {
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close(Statement stmt, Connection conn, ResultSet rs) {
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}