背景

  • 持久化:把Java对象保存在硬盘中
    • 序列化:将对象转换为二进制对象,再保存
    • 保存在关系型数据库中
  • Object-Relational Mapping(对象-关系映射框架,或ORM框架):把对象属性变成数据库的行-列,进而存储在数据库中
  • Java Database Connective JDBC(Java数据库连接技术):Java提供的一组与平台无关的数据库操作标准,用于Java与关系型数据库的连接
  • O/R Mapping中间件
    • EJB:对JDBC的重量级封装,用面向对象的风格实现数据的创建、读取、查询等操作
    • Hibernate:对JDBC的轻量级封装,把Java属性用声明的方式映射到数据库表,采用反射机制实现了持久化
    • Spring:基于IOC和AOP的结构J2EE系统的框架 
    • MyBatis:一种半自动的ORM框架,前身是iBatis

操作形式

  • JDBC本地驱动:由不同的数据库生产商根据JDBC定义的操作标准实现驱动程序,程序可直接通过JDBC进行数据库的连接操作,性能较高,但需对不同数据库编写相应驱动
  • JDBC网络驱动:利用特定的数据库连接协议进行数据库的网络连接,可连接任何一个指定服务器的数据库,实际开发使用最多

 [Java] 数据库编程JDBC_数据库连接

连接步骤

  • 向容器中加载数据库驱动程序
  • 通过DriverManager类根据指定数据库连接信息取得数据库连接
  • 利用Statement、PreparedStatement、ResultSet实现数据库CRUD操作
  • 释放占用的资源

 

连接数据库

[Java] 数据库编程JDBC_数据库_02[Java] 数据库编程JDBC_数据库_03
 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.SQLException;
 4 
 5 public class TestDemo {
 6     public static void main(String[] args) {
 7         try {
 8             Class.forName("com.mysql.jdbc.Driver");
 9             Connection c = DriverManager.getConnection(
10 "jdbc:mysql://127.0.0.1:3306/mysql?serverTimezone=GMT%2B8&characterEncoding=UTF-8&useSSL=false",
11                             "root", "Chen1227+");
12             System.out.println("数据库连接成功!" + c);
13         } catch (ClassNotFoundException e) {
14             e.printStackTrace();
15         }catch(SQLException e) {
16             e.printStackTrace();
17         }
18     }
19 }
View Code

[Java] 数据库编程JDBC_java_04

查询数据

[Java] 数据库编程JDBC_数据库_02[Java] 数据库编程JDBC_数据库_03
 1 import java.sql.Connection;
 2 import java.sql.DriverManager;
 3 import java.sql.ResultSet;
 4 import java.sql.SQLException;
 5 import java.sql.Statement;
 6 
 7 public class TestDemo {
 8     public static void main(String[] args) {
 9         try {
10             // 加载数据库驱动
11             Class.forName("com.mysql.jdbc.Driver");
12             
13             // 连接数据库
14             Connection c = DriverManager.getConnection(
15 "jdbc:mysql://127.0.0.1:3306/mysql?serverTimezone=GMT%2B8&characterEncoding=UTF-8&useSSL=false",
16                             "root", "Chen1227+");
17             System.out.println("数据库连接成功!" + c);
18             
19             // 建立连接
20             Statement s = c.createStatement();
21             System.out.println("获取 Statement对象: " + s);
22             
23             // 执行SQL语句
24             String sql = "SELECT order_num, cust_id FROM Orders";
25             ResultSet re = s.executeQuery(sql);
26             while(re.next()) {
27                 int order = re.getInt("order_num");
28                 int cust = re.getInt("cust_id");
29                 System.out.println(order + "," + cust);
30             }
31             System.out.println("执行语句成功!");
32             
33             // 关闭资源
34             re.close();
35             s.close();
36             c.close();
37             System.out.println("资源关闭成功!");
38             
39         } catch (ClassNotFoundException e) {
40             e.printStackTrace();
41         }catch(SQLException e) {
42             e.printStackTrace();
43         }
44     }
45 }
View Code

[Java] 数据库编程JDBC_数据库连接_07