什么是JDBC?
JDBC,意为 Java Database Connectivity(Java数据库连接),是 SUN 公司为了统一各大数据库厂商的链接而制定的一套规范。它可以为多种关系数据库提供统一访问,由大多数的接口和一部分类组成,程序员可以根据这种基准构建更为高级的工具和接口,使数据库开发人员更易于操作数据库。
关系:SUN公司制定规范,数据库厂商实现规范,程序员使用规范 ----侵删
JDBC开发步骤
- 导入数据库驱动,把 jar 包导入到工程中去,加入编译路径(创建文件夹-->粘贴jar包-->build path)
- 加载驱动,将驱动程序配置到 claspath 中(Class.foeName("driver name"))
- 连接数据库,通过 Connection 和 DriverManager 类完成
- 操作数据库,通过 Statement、PreparedStatement 和 ResultSet 三个接口完成
- 关闭数据库
注册数据库厂商提供的驱动程序,只要使用Driver接口就可以完成,可以在程序里写静态代码块以完成加载
static {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e){
e.printStackTrace();
}
}
连接数据库
Connection配合DriverManager 与数据库连接,在上下文执行sql语句并由 ResultSet 返回结果。
Connection conn = null;
Statement stmt = null;
try {
// 注册/加载 JDBC 驱动
Class.forName("com.mysql.jdbc.Driver");
// 打开链接
System.out.println("连接数据库······");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 执行查询
stmt = conn.createStatement();
String sql = "select empno,ename,job from emp;";
ResultSet rs = stmt.executeQuery(sql); //ResultSet 得到结果
查询结果
ResultSet对象有一个 next() 方法,返回布尔值以判断是否有下一条记录。
while(rs.next()) {
// 通过字段检索
int empno = rs.getInt("empno");
String name = rs.getString("ename");
String job = rs.getString("job");
// 输出数据
System.out.print("empno: " + empno);
System.out.print("\tename: " + name);
System.out.println("\tjob: " + job);
}
代码实例
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
try {
// 注册/加载 JDBC 驱动
Class.forName("com.mysql.jdbc.Driver");
// 打开链接
System.out.println("连接数据库······");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
// 执行查询
System.out.println("实例化 statement对······");
stmt = conn.createStatement();
String sql;
sql = "select empno,ename,job from emp;";
ResultSet rs = stmt.executeQuery(sql);
// 展开结果集数据库
while(rs.next()) {
// 通过字段检索
int empno = rs.getInt("empno");
String name = rs.getString("ename");
String job = rs.getString("job");
// 输出数据
System.out.print("empno: " + empno);
System.out.print("\tename: " + name);
System.out.println("\tjob: " + job);
}
// 完成后关闭
rs.close();
stmt.close();
conn.close();
}catch(SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
}catch(Exception e) {
// 处理 Class.forName 错误
e.printStackTrace();
}finally {
// 关闭资源
try {
if(stmt!=null) stmt.close();
}catch(SQLException se) {
// 什么也不做
}
try {
if(conn!=null) conn.close();
}catch(SQLException se) {
se.printStackTrace();
}
}
System.out.println("查询完成,白白ヾ(•ω•`)o");
}