JDBC的简介
Java Database Connectivity:连接数据库技术。
SUN公司为了简化、统一对数据库的操作,定义了一套Java操作数据库的规范(接口),使用同一套程序操作不同的数据库,称之为JDBC。
简单的说,JDBC的意义在于在Java程序中执行SQL语句。
JDBC开发支持jar:
java.sql
javax.sql
驱动包
JDBC的工作原理
JDBC中核心类:DriverManager驱动管理器
JDBC主要分为两层,第一层为Java的接口层,主要面向Java的应用程序开发者,它定义了操作数据库的各种功能的接口,第二层为数据库驱动层,为数据库供应商提供了注册其数据库产品驱动程序的接口,两者之间是通过驱动管理器来负责协调和管理的。由于JDBC为所有支持的数据库提供了统一的API接口,因此在实际的开发中,如果软件产品被要求同时支持多种数据库平台,其间主要的差异将来自于不同数据库产品在特殊SQL语句方面的差异,至于调用接口方面,如果没有使用极为依赖数据库平台的接口API,那么该部分程序代码将不用作出任何改变。以下我们将通过示例代码的方式逐步了解JDBC中提供的API接口。
JDBC的开发步骤
1.实现驱动注册(DriverManager)
2.建立连接
3.创建以及发送SQL指令
4.获取以及处理响应
5.释放资源
JDBC的入门案例
1.导入驱动包,建立一个lib文件夹存放程序需要的一些jar包,建立之后将jar包复制黏贴进到lib下
2.简单案例
程序代码
package test; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.mysql.jdbc.Driver; public class JDBCTest { public static void main(String[] args) throws Exception { // 1.借助DriverManager实现驱动的注册(mysql驱动就在DriverManager中管理) //DriverManager.registerDriver(new Driver()); // 反射(DriverManager.registerDriver()注册的唯一方法),注册驱动 Class.forName("com.mysql.jdbc.Driver"); // 2.建立连接 // jdbc:mysql://localhost:3306/db1711 // 协议:子协议://IP:端口/数据库 Connection conn = DriverManager.getConnection( "jdbc:mysql://localhost:3306/db1711",//url统一资源定位符(路径)和mysql DBMS的哪个数据库建立连接 "root",//user用户 "123456");//password密码 // 查看是否连接成功 // System.out.println(conn);//com.mysql.jdbc.JDBC4Connection@4d405ef7 // 3.发送sql指令 String sql = "select * from emp"; // 创建Statement的实现类的对象 Statement stmt = conn.createStatement(); // executeUpdate():增删该,返回的是int类型,影响的行数,0是失败 // executeQuery():查询,返回的是结果集 ResultSet rs = stmt.executeQuery(sql); // 4.结果集的处理() // rs.next():boolean类型,游标,没有值的话返回false while(rs.next()) {//遍历每一行的数据 // 依次获取每一列的数据 int empno = rs.getInt("empno"); String ename = rs.getString("ename"); System.out.println(empno+"\t"+ename); } // 5.释放资源 rs.close(); stmt.close(); conn.close(); } }
显示结果
7369 SMITH 7499 ALLEN 7521 WARD 7566 JONES 7654 MARTIN 7698 BLAKE 7782 CLARK 7788 SCOTT 7839 KING 7844 TURNER 7876 ADAMS 7900 JAMES 7902 FORD 7934 MILLER
核心API详解
DriverManager
驱动注册
第一种方式,会造成DriverManager中产生两个一样的驱动,并会对具体的驱动类产生依赖。
// 1.借助DriverManager实现驱动的注册(mysql驱动就在DriverManager中管理) DriverManager.registerDriver(new Driver());
第二种方式,反射加载(推荐),注册一次,在driver类加载的时候就注册了
// 反射(DriverManager.registerDriver()注册的唯一方法),注册驱动 Class.forName("com.mysql.jdbc.Driver");
Driver部分原码
public class Driver extends NonRegisteringDriver implements java.sql.Driver { // ~ Static fields/initializers // --------------------------------------------- // // Register ourselves with the DriverManager // static { try { java.sql.DriverManager.registerDriver(new Driver()); } catch (SQLException E) { throw new RuntimeException("Can't register driver!"); } }
}
增删改查案例
增
1 public static void insert(int deptno,String dname,String loc) throws Exception{ 2 Class.forName("com.mysql.jdbc.Driver"); 3 Connection conn = DriverManager.getConnection( 4 "jdbc:mysql://localhost:3306/db1711", 5 "root", 6 "123456"); 7 Statement stmt = conn.createStatement(); 8 String sql = "INSERT INTO dept VALUES("+deptno+",'"+dname+"','"+loc+"')"; 9 int num = stmt.executeUpdate(sql); 10 System.out.println(num); 11 stmt.close(); 12 conn.close(); 13 14 }