JDBC执行流程
- 加载驱动
- 连接数据源
- 传递指令
- 处理数据库响应
加载驱动使用Class.forName()
//JDBC版本在3.0以上都可以省略这步
private static String DRIVER = "com.mysql.cj.jdbc.Driver";
Class.forName(DRIVER)
连接数据源 使用DriverManager的getConnection方法
final String USER = "root";
final String PWD = "root";
final String URL = "jdbc:mysql://localhost:3306/jdbc?&useSSL=false&serverTimezone=UTC";
DriverManager.setLoginTimeout(5000);
connection = DriverManager.getConnection(URL, USER, PWD);
传递指令;以查询为例
public void seletc(){
PreparedStatement statement = null;
String sql = "SELECT * FROM test";
try {
statement = connection.prepareStatement(sql);
ResultSet resultSet = statement.executeQuery(sql);
ArrayList list = new ArrayList();
while (resultSet.next()){
Long id = resultSet.getLong("id");
String name = resultSet.getString("name");
System.out.println("id"+"-"+id+";"+"name"+"-"+name);
}
// if (!resultSet.next()){
// connection.close();
// }
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
connection 对象常用方法
createStatement() 创建向数据库发送sql的statement对象。
prepareStatement(sql) 创建向数据库发送预编译sql的PrepareSatement对象。
prepareCall(sql) 创建执行存储过程的callableStatement对象。
setAutoCommit(boolean autoCommit) 设置事务是否自动提交。
commit() 在链接上提交事务。
rollback() 在此链接上回滚事务。
Statement对象常用方法
executeQuery(String sql) 用于向数据发送查询语句。
executeUpdate(String sql) 用于向数据库发送insert、update或delete语句
execute(String sql) 用于向数据库发送任意sql语句
addBatch(String sql) 把多条sql语句放到一个批处理中。
executeBatch() 向数据库发送一批sql语句执行。
PreparedStatement 可对SQL进行预编译,防止SQL注入
over ! ! !