(1)概念
- JDBC:Java DataBase Connectivity
- JDBC是官方定义的一套操作所有关系型数据库的规则,各个数据库厂商去实现这套接口,并提供数据驱动jar包。我们可以使用JDBC编程,真正执行的代码是驱动jar包的实现类

(2)第一个JDBC
- 下载JDBC架包,https://dev.mysql.com/downloads/connector/j/,选择Platform Independent
``` import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement;
public class Main {
private static final String URL = "jdbc:mysql://localhost:3306/test";private static final String USERNAME = "root";private static final String PASSWORD = "root";public static void main(String[] args) throws Exception {//加载驱动程序Class.forName("com.mysql.cj.jdbc.Driver");//获得数据库连接Connection connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);//获取sql执行对象Statement statement = connection.createStatement();// 进行增删改查操作ResultSet resultSet = statement.executeQuery("select * from card");while (resultSet.next()){int money = resultSet.getInt("money");String username = resultSet.getString("name");System.out.println(username+" , "+money);}// 关闭数据库资源resultSet.close();statement.close();connection.close();}
}
<a name="BoFfc"></a>
### (3)流程分析
<a name="nG3xh"></a>
#### 注册驱动
- Class.forName加载类到内存,类中有个静态代码块,执行了DriverManager.registerDriver(new Driver());
- Class.forName()这行代码可以不写,后续版本后加了自动引入
public class Driver extends NonRegisteringDriver implements java.sql.Driver { public Driver() throws SQLException { }
static {
try {
DriverManager.registerDriver(new Driver());
} catch (SQLException var1) {
throw new RuntimeException("Can't register driver!");
}
}
Connection
- 数据库连接对象
- 获取执行sql的对象
- Statement createStatement() throws SQLException;
- PreparedStatement prepareStatement(String sql) throws SQLException;
- 管理事务
- 开启事务:void setAutoCommit(boolean autoCommit)
- 提交事务:void commit();
- 回滚事务:void rollback();
Statement
- boolean execute(string sql)
- int executeUpdate(string sql)
- 返回影响的行数:执行DML(insert update delete)语句,DDL(create alter drop)语句
- ResultSet executeQuery(string sql)
- DQL语句
中文乱码
url=jdbc:mysql://localhost:3306/test?characterEncoding=utf8
