一、JDBC概述
1、什么是JDBC
Java数据库连接(Java Database Connection,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了Java操作数据库的读写方法。
2、JDBC驱动程序的类型
(1)JDBC-ODBC桥
这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。
(2)本地API驱动
这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。
(3)网络协议驱动
这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
(4)本地协议驱动
这种类型的驱动使用Socket,直接在客户端和数据库间通信。
3、JDBC的主要API
JDBC API主要位于JDK中的java.sql包中,之后扩展的内容位于javax.sql包中:
(1)DriverManager
负责加载各种不同驱动程序(Driver),并根据不同的请求,向调用者返回相应的数据库连接(Connection)。
(2)Driver:
驱动程序,会将自身加载到DriverManager中去,并处理相应的请求并返回相应的数据库连接(Connection)。
(3)Connection
数据库连接,负责与进行数据库间通讯,SQL执行以及事务处理都是在某个特定Connection环境中进行的。可以产生用以执行SQL的Statement。
(4)Statement:
用以执行SQL查询和更新(针对静态SQL语句和单次执行)。
PreparedStatement:用以执行包含动态参数的SQL查询和更新(在服务器端编译,允许重复执行以提高效率)。CallableStatement:用以调用数据库中的存储过程。
(5)SQLException
代表在数据库连接的建立和关闭和SQL语句的执行过程中发生了例外情况(即错误)。
二、第一个JDBC程序
url="jdbc:mysql://127.0.0.1:3306/demo1?user=root&password=";
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver").newInstance();
//2、初始化连接对象
conn=DriverManager.getConnection(url);
//3、初始化stm对象
stm=conn.createStatement();
stm.executeUpdate(sql);
ResultSet rs=stm.executeQuery(sql);
示例-1:数据新增操作
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class Demo {
public static void main(String[] args) throws Exception {
String url="jdbc:mysql://127.0.0.1:3306/db1?user=root&password=";
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver").newInstance();
//2、获取Connetion对象
Connection conn = DriverManager.getConnection(url);
//3、获取Statement对象
Statement stm = conn.createStatement();
String sql = "INSERT INTO goods(goods_id,goods_name,goods_price) VALUES('G005','Book5',79)";
int r = stm.executeUpdate(sql);
if(r==1) {
System.out.println("新增成功");
}
}
}
示例-2:数据查询操作
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class Demo {
public static void main(String[] args) throws Exception {
String url="jdbc:mysql://127.0.0.1:3306/db1?user=root&password=";
//1、加载驱动
Class.forName("com.mysql.jdbc.Driver").newInstance();
//2、获取Connetion对象
Connection conn = DriverManager.getConnection(url);
//3、获取Statement对象
Statement stm = conn.createStatement();
String sql = "SELECT * FROM goods";
ResultSet rs = stm.executeQuery(sql);
while(rs.next()) {
System.out.print(rs.getString("goods_id"));
System.out.print(" ");
System.out.print(rs.getString("goods_name"));
System.out.print(" ");
System.out.print(rs.getFloat("goods_price"));
System.out.println();//换行
}
}
}
三、将JDBC程序封装Tools
1、使用记录集封装
【1】工具类
package com.test.tools;
import java.