模块二 JDBC和XML
JDBC
-
什么是JDBC?
- 一套操作关系型数据库的规则(接口)
- 数据库厂商需要实现这套接口,并且提供数据库驱动jar包
- 我们去使用这套接口,真正执行的是对应的驱动包中的实现类
- Java代码访问数据库的标准规范(接口),具体的实现方式由数据库厂商完成
- 面向接口编程,不依赖于任何数据库
-
第一步 注册驱动(可省略)
Class.forName("com.mysql.jdbc.Driver");
// Driver类是由mysql驱动包提供的一个实现类,实现了java.sql.Driver
public class Driver extends NonRegisteringDriver implements java.sql.Driver {
public Driver() throws SQLException {
}
// 静态代码块 随着类的加载而加载,只加载一次
static {
try {
//DriverManager就是驱动管理类,registerDriver方法就是用来注册驱动的
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
}
- 第二步 获得连接,连接对象
- URL:jdbc:mysql//localhost:3306/db4?characterEncoding=UTF-8
- 协议名://主机:端口号/数据库名?参数=参数值
//url:jdbc:mysql://localhost:3306/db4 //user:root //password:123456 public static Connection getConnection(String url, String user, String password) ; DriverManager.getConnection("","","");
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db4", "root", "123456"); //com.mysql.jdbc.JDBC4Connection@1aa7ecca 对象由mysql包提供 System.out.println(connection);
- 第三步 获取语句执行平台
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db4", "root", "123456"); //com.mysql.jdbc.JDBC4Connection@1aa7ecca System.out.println(connection); //获取Statement对象 Statement statement = connection.createStatement(); //返回受影响的行数 int i = statement.executeUpdate("create table test(id int,name varchar(20));"); System.out.println(i); //关闭流 statement.close(); connection.close();
-
第四步 处理结果集
- ResultSet接口方法
方法名 功能介绍 boolean next() 方法 判断是否下一条数据 xxx getXXx(String or int) 如果传递的参数是String类型,则表示通过列名查询
如果传递的参数是int类型,则表示通过列号查询public static void main(String[] args) throws Exception { Class.forName("com.mysql.jdbc.Driver"); Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db4", "root", "123456"); Statement statement = connection.createStatement(); ResultSet resultSet = statement.executeQuery("select * from jdbc_user;"); while (resultSet.next()){ System.out.print(resultSet.getInt("id")); System.out.print(resultSet.getString("username")); System.out.print(resultSet.getString("password")); System.out.println(resultSet.getDate("birthday")); } resultSet.close(); statement.close(); connection.close(); }
- 第五步 释放资源
public static void main(String[] args) { Connection connection = null; Statement statement = null; ResultSet resultSet = null; try { Class.forName("com.mysql.jdbc.Driver"); connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/db4", "root", "123456"); statement = connection.createStatement(); resultSet = statement.executeQuery("select * from jdbc_user;"); while (resultSet.next()) { System.out.print(resultSet.getInt("id")); System.out.print(resultSet.getString("username")); System.out.print(resultSet.getString("password")); System.out.println(resultSet.getDate("birthday")); } } catch (SQLException | ClassNotFoundException e) { e.printStackTrace(); } finally { try { resultSet.close(); statement.close(); connection.close(); } catch (SQLException e) { e.printStackTrace(); } } }
- ResultSet接口方法