什么是JDBC
JDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的JavaAPI。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、新增、更新和删除等操作
JDBC在应用程序与数据库之间起到了一个桥梁作用,当应用程序使用JDBC访问特定的数据库时,需要通过不同数据库驱动与不同的数据库进行连接,连接后即可对该数据库进行相应的操作
Driver接口
Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须把所使用的数据库驱动程序或类加载到项目的classpath中(这里指MySQL驱动的jar包)
DriverManager类
DriverManager类用于加载JDBC驱动并且创建与数据库的连接。在DriverManager类中定义了两个比较重要的静态方法

Connection接口
Connection接口代表Java程序和数据库的连接,只有获取该连接对象后,才能访问数据库,并操作数据表。在Connection接口中定义了一系列的方法

Statement接口
Statemen接口用于执行静态的SQL语句,并返回一个结果对象。Statement接口对象可以通过
Connection实例的createStatemen()方法获得,该对象会把静态的SQL语句发送到数据库中编译执行,然后返回数据库处理的结果
在Statement接口中,提供了3个常用的执行SQL语句的方法

PreparedStatement接口
PreparedStatement是Statement的子接口,用于执行预编译的SQL语句。该接口扩展了带有参数的SQL语句的执行操作,应用该接口中的SQL语句可以使用占位符 " ? " 来代替其参数,然后通过setXxx()方法为SQL语句的参数赋值,并且PreparedStatement提供了批量插入的方法。在PreparedStatement接口中提供了一些常用的方法,

ResultSet接口
ResultSet接口用于保存JDBC执行查询时返回的结果集,该结果集封装在一个逻辑表格中。在ResultSet接口内部有一个纸箱表格数据行的游标(或指针)。ResultSet对象初始化时,游标在表格第一行之前,调用next()方法可以将游标移动到下一行。如果下一行没有数据,则返回false。在应用程序中经常使用 next()方法作为while循环的条件来迭代ResultSet结果集

实现第一个JDBC程序
public class Example01 {
public static void main(String[] args) {
Connection conn=null;
Statement stmt=null;
ResultSet rst=null;
try {
//1.加载数据库的驱动
Class.forName("com.mysql.cj.jdbc.Driver");
//2.获取数据库的连接对象
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?serverTimezone=UTC", "root", "Ms961228");
//3.编写sql语句
String sql="select * from users";
//4.获取Statement对象,执行sql语句
stmt = conn.createStatement();
rst = stmt.executeQuery(sql);
//5.处理结果集
while(rst.next()) {
int id = rst.getInt("id");
String username = rst.getString("username");
String password = rst.getString("password");
String email = rst.getString("email");
Date birthday =rst.getDate("birthday");
Users users = new Users(id, username, password, email, birthday);
System.out.println(users.toString());
}
//6.释放资源
}catch (Exception e) {
e.printStackTrace();
}finally {
if(conn!=null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(stmt!=null) {
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rst!=null) {
try {
rst.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
}