涉及

  1. DriverManager: 管理JDBC驱动的基本服务
  2. DateSource:JDBC2.0中取代DriverManager的
  3. Connection:数据库连接对象
  4. Statement:执行sql的对象
  5. PreparedStatement:预编译sql的对象
  6. ResultSet:结果集

驱动管理

1
2
//连接MySQL注册驱动
Class.forName("com.mysql.jdbc.Driver");

会执行com.mysql.jdbc.Driver类的static代码块,注册驱动,如下:

1
2
3
4
5
6
7
static{
try{
java.sql.DriverManger.registerDriver(new Driver());
}catch(SQLException E){
throw new RuntimeException("Cant't register driver!");
}
}

如果没有注册驱动,驱动jar包版本>=5,会通过jar包下的配置文件自动注册驱动

Connection 数据库连接对象

  • 功能
    1. 获取执行sql的对象
      • Statement createStatement()
      • PreparedStatement preparedStatement()
    2. 管理事物
      • 开启事物:setAutoCommit(boolean autoCommit)
      • 提交事务: commit()
      • 回滚事物: rollback()

获取连接

static Connection getConnection(String url, String user, String password);

  • String url:
    • jdbc:mysql://ip(域名):端口号/数据库名称

Statement 执行sql的对象

int executeUpdate(String sql)
返回影响行数

ResultSet executeQuery(String sql)

li

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
Statement stmt = null;
Connection conn = null;
try {
//1. 注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2. 定义sql
String sql = "insert into account values(null,'王五',3000)";
//3.获取Connection对象
conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");
//4.获取执行sql的对象 Statement
stmt = conn.createStatement();
//5.执行sql
int count = stmt.executeUpdate(sql);//影响的行数
//6.处理结果
System.out.println(count);
if(count > 0){
System.out.println("添加成功!");
}else{
System.out.println("添加失败!");
}

} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
//stmt.close();
//7. 释放资源
//避免空指针异常
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}