JDBC_01对JDBC本质的理解
JDBC_01对JDBC本质的理解
1.JDBC是什么?
Java DataBase Connectivity(Java语言连接数据库)
2.JDBC的本质
JDBC是SUN公司制定的一套接口(interface),【在java.sql.*;包下有很多接口】。
接口都有调用者和实现者。
面向接口调用、面向接口写实现类,这些都属于面向接口编程。
为什么要面向接口编程?
-
解耦和:降低程序的耦合度,提高程序的扩展力。
-
多态机制就是非常典型的:面向抽象编程。(不要面向具体编程)
-
建议:
-
Animal a = new Cat(); //Animal a = new Dog(); //走的方法 public void walk(Animal a){//面向父类型编程 }
-
-
不建议:
-
Cat cat = new Cat(); //Dog dog = new Dog();
-
-
思考:为什么SUN制定一套JDBC接口?
因为每一个数据库底层实现原理都不一样。
Oracle数据库有自己的实现原理。
MySQL数据库有自己的实现原理。
MS SqlServer数据库也有自己的实现原理。
...
每一个数据库产品都有自己独特的实现原理。
3.通过编写程序模拟jdbc的本质
3.1模拟SUN公司
/**
模拟SUN公司制定JDBC接口
*/
public interface JDBC {
/*
连接数据库的方法
*/
void getConnection();
}
3.2模拟数据库厂家
1)MySQL数据库厂家:
/**
模拟MySQL数据库厂家负责编写JDBC接口的实现类
*/
public class MySQL implements JDBC {
public void getConnection(){
System.out.println("连接MySQL数据库成功!");
}
}
2)Oracle数据库厂家:
/**
模拟Oracle数据库厂家负责编写JDBC接口的实现类
*/
public class Oracle implements JDBC {
public void getConnection(){
System.out.println("连接Oracle数据库成功!");
}
}
3)SqlServer数据库厂家:
/**
模拟SqlServer数据库厂家负责编写JDBC接口的实现类
*/
public class SqlServer implements JDBC{
public void getConnection(){
System.out.println("连接SqlServer数据库成功!");
}
}
3.2模拟java程序员
import java.util.*;
/**
Java程序员角色
不需要关心是哪个牌子的数据库,直接面向接口写代码
*/
public class ConnectProgromer {
public static void main(String[] args) throws Exception{
/*
1.通过创建类来连接数据库
*/
//JDBC jdbc = new MySQL();
//JDBC jdbc = new SqlServer();
//jdbc.getConnection();
/*
2.使用反射机制连接数据库
*/
//Class c = Class.forName("MySQL");
//JDBC jdbc = (JDBC)c.newInstance();
//jdbc.getConnection();
/*
3.通过资源绑定器获取配置文件中数据库名的方式连数据库
*/
//获取配置文件里的数据库名
ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
String classname = bundle.getString("classname");//配置文件中数据库的名字
//通过反射机制实例化JDBC对象
Class c = Class.forName(classname);
JDBC jdbc = (JDBC)c.newInstance();
jdbc.getConnection();
}
}
编译运行结果:
更改配置文件:
无需重新编译,再次运行:
总结:JDBC就是一套接口。
4.配置驱动到系统环境变量中
此步骤只适用于用记事本开发,idea另有配置方法。
MySQL驱动下载地址:https://dev.mysql.com/downloads/connector/j/
在下拉选项里选择Platform Independent。
我的是windows系统,选择下载zip压缩文件。
下载完后解压缩,里面有一个后缀为.jar的文件,这就是MySQL驱动。
然后右击此电脑-->高级系统设置-->环境变量。
查看环境变量中是否有classpath环境变量,如果没有则新建一个。
然后在变量值一栏写上:
.;jar包的绝对路径
注意:必须在最前面加一个.;
”.“代表你写的程序的当前路径,如果只加了jar包的绝对路径,那么程序运行时,虚拟机就只会去jar包目录下找class文件,不会去你写的代码目录下找class文件。也就是说你写的代码不能运行。