1、什么是JDBC?
Java DataBase Connectivity
在Java语言中编写Sql语句,对Mysql数据库中的数据进行CRUD操作。
2、JDBC相关的类库在哪里?
java.sql.*
3、JDBC本质上是一堆什么呢?
java.sql.包下都是JDBC的接口,SUN公司制定的,JDBC是体现“接口作用”的非常经典的例子。
JDBC降低了耦合度,提高了扩展力。对于java程序员来说,不需要关心数据库是哪个品牌。只要面向JDBC接口编程就行!JDBC整个程序的结构当中有三波人:
第一波:SUN公司,负责制定JDBC接口。这些接口已经写好了,在java.sql.*;
第二波:java.sql.*下面的所有接口都要有实现类,这些实现类是数据库厂家编写的。
我们连接的是Mysql数据库,Mysql数据库厂家的实现类在mysql-connector-java- 5.1.23-bin.jar
这个Jar包中很多.class字节码文件,这是mysql数据库厂家写的接口实现!
注意:如果连接的是Oracle数据库,你需要从网上下载Oracle的jar包。
mysql-connector-java-5.1.23-bin.jar 这个Jar包有一个专业的术语----Mysql的驱动。
如果是Oracle的Jar,被称为Oracle的驱动。
第三波:我们Java程序员,面向JDBC接口写代码就行!
4、JDBC开发之前的准备工作?
mysql-connector-java-5.1.23-bin.jar里是字节码,是class文件。
Java虚拟机的类加载器会去加载class文件,classpath没有配置的情况下,默认从当前路径下加载class。如果classpath配置死了,例如:classpath=D:\abc,则表示固定只从d:\abc目录下找class。
classpath=.;D:\course\04-JDBC\resources\MySql Connector Java 5.1.23\mysql-connector-java-5.1.23-bin.jar,.代表当前路径。
类加载器从当前路径下加载class,如果当前路径下没找到,则去D:\course\04-JDBC\resources\MySql Connector Java 5.1.23\mysql-connector-java-5.1.23-bin.jar找class文件。
jar包不需要解压,java虚拟机的类加载器有这个能力找到class文件。
JDBC编程六步
1. 注册驱动(Driver)
通知java程序我们即将要连接的是哪个品牌的数据库
2. 获取数据库连接(Connection)
Java进程和Mysql进程,两个进程之间的通道开启了
3. 获取数据库操作对象(Statement)
这个对象很重要,用这个对象执行SQL的
4. 执行SQL语句(ExecuteQuery)
执行CRUD操作
5. 处理查询结果集(Next)
如果第四步是Select语句,才有这个第五步
6. 释放资源(Close)
关闭所有的资源(因为JDBC毕竟是进程之间的通信,占用很多资源的,需要关闭!)
先释放Statement,再释放Connection,分别进行Try…Catch处理,放到Finally中关闭
JDBC六步:
1.第一种注册驱动的方法
public class JDBCTest {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try{
//1.注册驱动
DriverManager.registerDriver(new com.mysql.jdbc.Driver());
//2.获取连接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/bjpowernode","root","412368LUQ");
//3.获取数据库操作对象
stmt = conn.createStatement();
//4.执行SQL
String sql = "select e.ename,d.dname from emp e join dept d on e.deptno = d.deptno";
rs = stmt.executeQuery(sql);
//5.处理查询结果集
while(rs.next()){
String ename = rs.getString("ename");
String dname = rs.getString("dname");
System.out.println(ename+","+dname);
}
}catch(SQLException e){
e.printStackTrace();
}finally {
//6.释放资源
if(rs != null){
try{
rs.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(stmt != null){
try{
stmt.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try{
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
}
2.第二种注册驱动的方法
//注册驱动的第二种方式:类加载注册
public class JDBCTest04 {
public static void main(String[] args) {
Connection conn = null;
Statement stmt = null;
ResultSet rs = null;
try {
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.获取连接
conn = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/bjpowernode","root","412368LUQ");
//3.获取数据库操作对象
stmt = conn.createStatement();
//4.执行SQL语句
String sql = "select a.ename as '员工',b.ename as '领导' from emp a left join emp b on a.mgr = b.empno";
rs = stmt.executeQuery(sql);
//5.处理查询结果集
while(rs.next()){
String ename = rs.getString("员工");
String lname = rs.getString("领导");
System.out.println(ename + "," + lname);
}
} catch (Exception e) {
e.printStackTrace();
}finally {
//6.释放资源
if (rs != null){
try{
rs.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if (stmt != null){
try{
stmt.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if (conn != null){
try{
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
}