Java学习第十七天 JDBC

什么是JDBC

JDBC的全称是Java数据库连接(Java Database Connectivity),它是一套用于执行SQL语句的JavaAPI。应用程序可通过这套API连接到关系型数据库,并使用SQL语句来完成对数据库中数据的查询、新增、更新和删除等操作

JDBC在应用程序与数据库之间起到了一个桥梁作用,当应用程序使用JDBC访问特定的数据库时,需要通过不同数据库驱动与不同的数据库进行连接,连接后即可对该数据库进行相应的操作

Driver接口

Driver接口是所有JDBC驱动程序必须实现的接口,该接口专门提供给数据库厂商使用。需要注意的是,在编写JDBC程序时,必须把所使用的数据库驱动程序或类加载到项目的classpath中(这里指MySQL驱动的jar包)

DriverManager类

DriverManager类用于加载JDBC驱动并且创建与数据库的连接。在DriverManager类中定义了两个比较重要的静态方法
Java学习第十七天 JDBC_第1张图片

Connection接口

Connection接口代表Java程序和数据库的连接,只有获取该连接对象后,才能访问数据库,并操作数据表。在Connection接口中定义了一系列的方法Java学习第十七天 JDBC_第2张图片

Statement接口

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

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();
				}
			}
		}
	}
}

你可能感兴趣的:(Java)