JDBC(Java DateBase Connectivity)是Java数据库连接技术的简称,提供连接各种常用数据库的能力
提供者:Sun公司
作用:Java访问数据库的标准规范。提供给程序员调用的接口与类,集成在java.sql和javax.sql包中
提供者:Sun公司
作用:管理各种不同的JDBC驱动,并获取数据库连接
提供者:各大数据库厂商
作用:JDBC是接口,而JDBC驱动才是接口的实现。每个数据库厂商都有自己的驱动,用来连接自己公司的数据库
JDBC API的主要功能:与数据库建立连接、执行SQL语句、处理结果和释放资源
API名称 | API作用 |
DriverManager | 注册驱动,获取Connection连接对象 |
Connection | 负责连接数据库并担任传送数据的任务,最为重要的就是用来产生Statement对象 |
Statement | 负责向数据库发送SQL语句,这样数据库就会执行发送过来的SQL语句 |
ResultSet | ResultSet对象表示查询结果集,只有在执行查询操作后才会有结果集的产生,结果集是一个二维的表格 |
DriverManager用于加载驱动,并创建与数据库的连接,该API常用方法:
注意:在实际开发中不推荐采用registerDriver方法注册驱动,原因:
username和password是登录数据库的用户名和密码
url用来找到要连接数据库的“网址”。MySQL的URL:
jdbc:mysql://localhost:3306/myschool
JDBC规定url的格式由三部分组成,每个部分使用冒号分隔:
方法名 | 方法的作用 |
createStatement() | 创建向数据库发送sql的statement对象 |
prepareStatement(sql) | 创建向数据库发送预编译sql的prepareStatement对象 |
prepareCall(sql) | 创建执行存储过程的callbleStatement对象 |
setAutoCommit(bollean autoCommit) | 设置事务是否自动提交 |
commit() | 在此连接上提交事务 |
rollback() | 在此连接上回滚事务 |
close() | 关闭数据库连接 |
Statement对象是通过Connection对象的方式创建的
//创建Statement对象
Statement stmt = con.createStatement();
Statement对象用来向数据库发送要执行的SQL语句
//发送给服务器的SQL语句
String sql = "select username from users";
//执行SQL语句,并返回结果集
ResultSet rs = stmt.executeQuery(sql);
//执行SQL语句,并返回结果集
String sql = "select username from users";
ResultSet rs = stmt.executeQuery(sql);
//读取结果
while(rs.next()){
String userName=rs.getString("username");
System.out.println(userName);
}
//释放资源
try {
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(stmt!=null){
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
package day01;
import java.sql.*;
/**
* @datetime: 2024/1/10
* @desc:JDBC编程模板-读取一共有几行数据
*/
public class CheckTheQuantityOfData {
// JDBC连接参数
private static String url = "jdbc:mysql://127.0.0.1:3306/myschool?useSSL=false";
private static String username = "root";
private static String password = "这里填数据库的密码";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
conn = DriverManager.getConnection(url,username,password);
//3、创建statement对象,并发送/执行SQL
stmt = conn.createStatement();
String sql = "SELECT COUNT(1) FROM USER";
rs = stmt.executeQuery(sql);
//4、处理结果
int userCount = 0;
while (rs.next()) {
userCount = rs.getInt("count(1)");
}
System.out.println("该表中一共有" + userCount + "条记录");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//5、释放资源
try {
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(stmt!=null){
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
package day01;
import java.sql.*;
/**
* @datetime: 2024/1/10
* @desc:JDBC编程模板-显示整个表格
*/
public class DisplayTable {
//JDBC连接参数
private static String url = "jdbc:mysql://127.0.0.1:3306/myschool?useSSL=false";
private static String username = "root";
private static String password = "这里填的是数据库密码";
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2、获取连接
conn = DriverManager.getConnection(url,username,password);
//3、创建statement对象,并发送/执行SQL
stmt = conn.createStatement();
//查询全部
String sql = "SELECT ID,USERNAME,USERPASS,ROLE FROM USER";
rs = stmt.executeQuery(sql);
//4、处理结果
while (rs.next()) {
int id = rs.getInt("ID");
String userName = rs.getString("USERNAME");
String userPass = rs.getString("USERPASS");
int role = rs.getInt("ROLE");
System.out.println("ID:" + id + "\t\t用户名:" + userName + "\t\t密码:" + userPass + "\t\t角色:" + role);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
//5、释放资源
try {
if(rs!=null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(stmt!=null){
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}