DriverManager:驱动管理类主要作用:
一、注册驱动
实际开发中注册驱动会使用如下的方式:
Class.forName(“com.mysql.jdbc.Driver”); 因为之前的方式会导致驱动注册两次。
二、获得连接
Connection getConnection(String url,String username,String password);
url 写法:jdbc:mysql://localhost:3306/jdbc jdbc :协议
mysql : 子 协 议localhost :主机名3306 :端口号
url 简写:jdbc:mysql:///jdbc
Connection :连接对象
主要作用:
一、创建执行 SQL 语句的对象
Statement createStatement() :执行 SQL 语句,有 SQL 注入的漏洞存在。
PreparedStatement prepareStatement(String sql) :预编译 SQL 语句,解决 SQL注入的漏洞。
CallableStatement prepareCall(String sql) :执行 SQL 中存储过程
二、进行事务的管理
setAutoCommit(boolean autoCommit):设置事务是否自动提交。
commit():事务提交
rollback():事务回滚
Statement :执行 SQL
主要作用:
一、执行SQL 语句
boolean execute(String sql):执行 SQL,执行 select 语句返回 true,否则返回 false ResultSet
executeQuery(String sql):执行 SQL 中的 select 语句
int executeUpdate(String sql):执行 SQL 中的 insert/update/delete 语句
二、执行批处理操作
addBatch(String sql):添加到批处理
executeBatch():执行批处理
clearBatch():清空批处理
ResultSet:结果集
结果集:其实就是查询语句(select)语句查询的结果的封装。主要作用:
结果集获取查询到的结果的。
next():针对不同的类型的数据可以使用 getXXX()获取数据,通用的获取数据的方法: getObject();
代码演示:
package com.imooc.jdbc.demo1;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import org.junit.Test;
import com.mysql.jdbc.Driver;
public class JDBCDemo1 {
@Test
/**
* JDBC资源的释放
*/
public void demo2(){
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
// 1.加载驱动
// DriverManager.registerDriver(new Driver());// 会导致驱动注册两次。
Class.forName("com.mysql.jdbc.Driver");
// 2.获得连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest", "root", "abc");
// 3.创建执行SQL语句的对象,并且执行SQL
// 3.1创建执行sql的对象
String sql = "select * from user";
stmt = conn.createStatement();
// 3.2执行sql
rs = stmt.executeQuery(sql);
while(rs.next()){
int uid = rs.getInt("uid");
String username = rs.getString("username");
String password = rs.getString("password");
String name = rs.getString("name");
System.out.println(uid+" "+username+" "+password+" "+name);
}
} catch (Exception e) {
e.printStackTrace();
}finally{
// 4.释放资源
if (rs != null) {
try {
rs.close();
} catch (SQLException sqlEx) { // ignore
}
rs = null;
}
if(stmt != null){
try {
stmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
stmt = null;
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
conn = null;// 垃圾回收机制更早回收对象。
}
}
}
@Test
/**
* JDBC的入门程序
*/
public void demo1(){
try {
// 1.加载驱动
// DriverManager.registerDriver(new Driver());// 会导致驱动注册两次。
Class.forName("com.mysql.jdbc.Driver");
// 2.获得连接
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/jdbctest", "root", "abc");
// 3.创建执行SQL语句的对象,并且执行SQL
// 3.1创建执行sql的对象
String sql = "select * from user";
Statement stmt = conn.createStatement();
// 3.2执行sql
ResultSet resultSet = stmt.executeQuery(sql);
while(resultSet.next()){
int uid = resultSet.getInt("uid");
String username = resultSet.getString("username");
String password = resultSet.getString("password");
String name = resultSet.getString("name");
System.out.println(uid+" "+username+" "+password+" "+name);
}
// 4.释放资源
resultSet.close();
stmt.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}