JDBC接口(API)包括两个层次:
JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接口编程即可。
不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。 ————面向接口编程
补充:ODBC(Open Database Connectivity,开放式数据库连接),是微软在Windows平台下推出的。使用者在程序中只需要调用ODBC API,由 ODBC 驱动程序将调用转换成为对特定的数据库的调用请求。
Oracle的驱动:oracle.jdbc.driver.OracleDriver
mySql的驱动: com.mysql.jdbc.Driver (5.0版本)
链接:https://pan.baidu.com/s/143CdAmYhgo_RJOzLudbKAQ?pwd=n660
mySql的驱动: com.mysql.cj.jdbc.Driver (8.0版本)
下载链接: https://dev.mysql.com/downloads/file/?id=477058
接下来我们使用的都是8.0以上的版本
完成之后让我们开始数据库的连接吧!
1. 连接方式一
public class ConnectionTest {
/*
* 1.获取driver实现类对象
* 2.提供需要连接的数据库url
* 3.提供需要的用户名和密码,将它存在properties中
* 4.connection 获取连接
* */
//@Test ctrl + T 导包 可以测试方法
@Test
public void testConnection1() throws Exception {
Driver driver = new com.mysql.cj.jdbc.Driver();
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
//这里test是用户自己数据库的名字,大家适当做出改变,这里我们使用的是mysql8.0版本
Properties info = new Properties() ;
//用户名和密码封装在Properties当中
info.setProperty("user", "root");
info.setProperty("password", "123.com");
Connection conn = driver.connect(url, info);
System.out.println(conn);
}
考虑基础比较薄弱的同学对一些问题不太了解,我们来回顾一下一些前置知识
JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。
JDBC URL的标准由三部分组成,各部分间用冒号分隔。
要素2 :用户名和密码
要素3 :properties回顾
user=root
password=123.com
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
#driverClass是随便命名,看代码中用的是什么名字
driverClass=com.mysql.cj.jdbc.Driver
虽然这里没有用到properties文件,但在第五种连接会用到大家先有一个印象
2.Properties类
java中提供了配置文件的操作类Properties类(java.util.Properties):
public class Properties extends Hashtable.可见Properties类继承了Hashtable,而HashTable又实现了Map接口,所以方法内的参数是一对键值对
Properties的常用方法:(常用标*
, 其他了解即可) \
2. 连接方式二
@Test
public void testConnection2() throws Exception {
// Driver driver = new com.mysql.cj.jdbc.Driver();
//获取Driver实现类对象,使用反射, 没有使用第三方的API,程序具有更好的可移植性
Class> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
Properties info = new Properties() ;
//用户名和密码封装在Properties当中
info.setProperty("user", "root");
info.setProperty("password", "123.com");
Connection conn = driver.connect(url, info);
System.out.println(conn);
}
说明:相较于方式一,这里使用反射实例化Driver,不在代码中体现第三方数据库的API。体现了面向接口编程思想。
3.连接方式三
@Test
public void testConnection3() throws Exception {
Class> clazz = Class.forName("com.mysql.cj.jdbc.Driver");
Driver driver = (Driver) clazz.newInstance();
//注册驱动
DriverManager.registerDriver(driver);
//提供3个connection所需要的基本信息
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
// 第一种方式
//String user = "root";
//String password = "123.com";
//Connection conn = DriverManager.getConnection(url, user, password);
//第二种把user和password封装在inno对象中
Properties inno = new Properties();
inno.setProperty("user", "root");
inno.setProperty("password", "123.com");
Connection conn = DriverManager.getConnection(url, inno);
System.out.println(conn);
}
说明:使用DriverManager实现数据库的连接。体会获取连接必要的4个基本要素。
4.连接方式四
@Test
public void testConnection4() throws Exception {
//加载Driver
// Class> clazz = 被注释掉
Class.forName("com.mysql.cj.jdbc.Driver");
// 可以省略下面的操作,mysql实现类中声明了静态代码块,实现下面的注册的操作,静态代码块随着类加载的时候而执行
//Driver driver = (Driver) clazz.newInstance();
//DriverManager.registerDriver(driver);
//提供3个connection所需要的基本信息
String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
String user = "root";
String password = "123.com";
Connection conn = DriverManager.getConnection(url, user, password);
//第二种大家记住第一种即可
//Properties inno = new Properties();
//inno.setProperty("user", "root");
//inno.setProperty("password", "123.com");
//Connection conn = DriverManager.getConnection(url, inno);
System.out.println(conn);
}
5. 连接方式五
@Test
public void testConnection5() throws Exception {
// Class> clazz =
//加载Driver
106行 //Class.forName("com.mysql.cj.jdbc.Driver");
// 可以省略下面的操作,mysql实现类中声明了静态代码块,实现下面的注册的操作,静态代码块随着类加载的时候而执行
//Driver driver = (Driver) clazz.newInstance();
//DriverManager.registerDriver(driver);
//提供3个connection所需要的基本信息
//String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT";
// String user = "root";
// String password = "123.com";
//将上面的放在配置文件中,为何放在配置文件中呢,是因为我们在打包一个程序成jar包的时候,我们如果修改上述内容,需要重新打jar包
//但如果我们就将上面的内容放在配置文件中的话,由于配置文件可以随时更改,就更加方便,节约时间
// 类加载器
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
//创建properties对象加载配置文件
Properties pros = new Properties();
pros.load(is);
String user1 = pros.getProperty("user");
String password1 = pros.getProperty("password");
String url1 = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
Class.forName(driverClass); //代替106行加载驱动
Connection conn = DriverManager.getConnection(url1, user1, password1);
System.out.println(conn);
}
其中,配置文件声明在工程的src目录下:【jdbc.properties】
user=root
password=123.com
url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone = GMT
#driverClass是随便命名,看代码中用的是什么名字
driverClass=com.mysql.cj.jdbc.Driver
说明:使用配置文件的方式保存配置信息,在代码中加载配置文件
使用配置文件的好处:
①实现了代码和数据的分离,如果需要修改配置信息,直接在配置文件中修改,不需要深入代码
②如果修改了配置信息,省去重新编译的过程。
虽然我们学习了五种连接方式,但我们只要学会使用最后一种方式即可,看到这里,本篇文章就结束了, 如果有帮助的话, 还不点个小爱心嘛