一、简介
JDBC 是 Java语言提供访问和操作数据库中的一种途径,可以连接不同数据库的类库。
三个核心功能:
- 连接数据库
- 向数据库发送SQL语句
- 操作SQL语句的返回结果
二、JDBC核心类与接口
1、DriverManager类
DriverManger是java.sql包下的一个类,它的作用是1.注册驱动:这可以让JDBC知道要使用的是哪个驱动。2.获取Connection:成功获取到Connection,那么说明已经与数据库连接上了。
常用方法:
public static Connection getConnection(String url,String user,String password)
该方法作用试图建立到给定数据库 URL 的连接,并返回一个数据库连接对象connection
getConnection方法有三个参数:
url: URL用于标识数据库的位置,通过URL地址告诉JDBC程序连接哪个数据库
其基本格式为:协议子协议主机端口数据库,例如: jdbc:mysql://localhost:3306/itcast_gjp
如果我们连接的是本机并且端口号是3306,以上代码也可以简写成Jdbc:mysql:///itcast_gjp
url后面也可以携带参数例如:jdbc:mysql://localhost:3306/day06?useUnicode=true&characterEncoding=UTF-8
user:这个是数据库的用户名
password:这个是对应用户的密码
2、Connection类
Connection代表的是一个与数据库连接的对象
常用方法:
Statement createStatement() 创建一个 Statement 对象来将 SQL 语句发送到数据库
PreparedStatement prepareStatement(String sql)创建一个 PreparedStatement 对象来将参数化的 SQL 语句发送到数据库
CallableStatement prepareCall(String sql)创建一个 CallableStatement 对象来调用数据库存储过程
3、Statement类
Statement对象用于执行静态 SQL 语句并返回它所生成结果的对象。
常用方法:
ResultSet executeQuery(String sql) 执行给定的sql语句,该语句通常是select,返回单个的ResultSet对象
int executeUpdate(String sql) 执行给定的sql语句,该语句可能为update,delete,insert,返回的是行计数
boolean execute(String sql) 执行给定的sql语句,该语句返回多个结果,如果第一个结果为ResultSet对象,则返回true,其它则返回false
4、ResultSet类
ResultSet对象表示数据库结果集的数据表,是一个二维数据表,可以通过索引操作其中的数据,通常通过执行查询数据库的语句生成。Resultset封装执行结果时,类似迭代器。
常用方法:
boolean next()将光标从当前位置向前移一行。ResultSet 指针最初位于第一行之前;第一次调用 next 方法使第一行成为当前行;第二次调用使第二行成为当前行,依此类推。如果存在下一行,则返回true,不存在则返回false.
Object getObject(String columnLabel) 获取任意类型数据,参数 columnLabel代表的是列的名称
Object getObject(int columnIndex) 参数columnIndex代表的是列的序号,第一列序号为1,第二列是2,以此类推
获取指定类型数据
int getInt(int columnIndex)
Date getDate(int columnIndex)
String getString(int columnIndex)
三、JDBC操作数据库
JDBC连接数据库是一个固定步骤,是常规Java项目的基本操作。
1.通过DriverManager注册驱动
2.通过DriverManager获取连接对象Connection
3.通过Connection获取一个可以向数据库发送sql语句的对象Statement
4.通过Statement对象执行sql语句(select) 得到一个结果集ResultSet
5.遍历结果集ResultSet,得到数据表中的数据
6.释放资源
/**
*1.通过DriverManger注册驱动
* 使用registerDriver()方法注册驱动最终会组测两次驱动,因为Driver对象中有一个静态代码块用来注册驱动
* 因此常用反射的方式注册驱动
* Class.forName("com.mysql.jdbc.Driver");
*/
DriverManager.registerDriver(new Driver() throws SQLException);
/**2.通过DriverManager获取连接对象*/
Connection connection = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/ gjp", "root", "abc");
/**3.通过Connection获取一个操作sql语句的对象Statement*/
Statement statement = connection.createStatement();
/**
* 4.执行sql语句(select) 得到一个ResultSet
* 使用executeQuery方法执行查询会有结果集,使用executeUpdate方法执行更新则没有结果集
*/
String sql = "select * from aaa";
ResultSet resultSet = statement.executeQuery(sql);
/**
* 5.操作结果集,得到数据(使用类似迭代器)
* ResultSet就是一张二位表格,它内部有一个"行光标",光标默认的位置在"第一行上方",我们可以调用ResultSet对象的next()方法把"行光标"向下移动一行,当第一次调用next()方法之后,"行光标"就到了第一行记录的位置,这时就可以使用ResultSet提供的getXXX(int col)方法来获取指定列的数据了
* resultSet.next();//光标移动到第一行
* resultSet.getInt(1);//获取第一行第一列的数据
*/
while (resultSet.next()) {
System.out.println("ID:" + resultSet.getInt("id") + "\tNAME:"+ resultSet.getString("name"));
}
/**
* 6.释放资源
* 包括结果集 resultSet
* 负责向数据库发送sql语句的对象 statement
* 数据库连接对象 connection
* 关闭是有顺序的,先得到的后关闭,后得到的先关闭
*/
resultSet.close();
statement.close();
connection.close();