一:JDBC概述
1.数据持久化
- 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
- 简单来说,数据持久化就是将数据保存到数据库或硬盘的过程
2.Java中的数据存储技术
主要可分为:
- JDBC直接访问数据库
- 第三方O/R工具,如:Hibernate, Mybatis 等
- JDO(Java Data Object)技术
JDBC是Java访问数据库的基础,第三方O/R工具与JDO都只是更好的封装了JDBC。
3.JDBC
- JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库(java.sql,javax.sql),使用这些类库可以以一种标准的方法、方便地访问数据库资源。
- 实际的数据库连接
- JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
- JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
4.JDBC体系
JDBC接口(API)包括两个层次:
- 面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
- JDBC是Java维护公司提供一套用于数据库操作的接口,java程序员只需要面向Java API即可。
- 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。
- 不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。
5.JDBC的编程过程
二:获取数据库连接
1.Driver接口实现类
-
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。由数据库厂商负责实现与使用的,不同数据库厂商提供不同的实现。
-
在使用者编写程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(
java.sql.DriverManager
)去调用这些Driver实现。- Oracle的驱动:oracle.jdbc.driver.OracleDriver
- MySQL的驱动: com.mysql.jdbc.Driver*
2.URL
用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。
JDBC URL的标准由三部分组成,各部分间用冒号分隔。
- jdbc:子协议:子名称
- 协议:JDBC URL中的协议总是jdbc
- 子协议:子协议用于标识一个数据库驱动程序
- 子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号,数据库名
例:
3.jar包的安装
数据库的jar包就提供了数据库厂商负责实现与使用的数据库驱动
mysql-connector-java-5.1.37-bin.jar
将上述jar包(mysql5.1.37)拷贝到Java工程的一个目录中,习惯上新建一个lib
文件夹。
在驱动jar上右键–>Build Path
–>Add to Build Path
注意:如果是Dynamic Web Project
(动态的web项目)话,则是把驱动jar放到WebContent
(有的开发工具叫WebRoot)目录中的WEB-INF目录中的lib目录下即可
4.获取数据库连接
package com.jdbc1.connection;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.Driver;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import org.junit.Test;
public class ConnectionTest {
//方式一:
@Test
public void testConnection() throws SQLException {
Driver driver = new com.mysql.jdbc.Driver();
//jdbc:mysql:协议
//localhost:ip地址
//3306:端口号
//test:test数据库
String url = "jdbc:mysql://localhost:3306/test";
//将用户名和密码封装成Properties对象中
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "123456");
Connection conn = driver.connect(url, info);
System.out.println(conn);
}
//方式二:对方式一的迭代(在程序中不出现第三方API,使程序移植性更好)
@Test
public void testConnection2() throws Exception {
//1.获取Driver实现类对象:使用反射
Class clazz = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver)clazz.newInstance();
//2.提供连接数据库
String url = "jdbc:mysql://localhost:3306/test";
//3.将用户名和密码封装成Properties对象中
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "123456");
//4.连接
Connection conn = driver.connect(url,info);
System.out.println(conn);
}
//方式三:使用DriverManager替换Driver
@Test
public void testConnection3() throws Exception {
//1.获取Driver实现类对象
Class clazz = Class.forName("com.mysql.jdbc.Driver");
Driver driver = (Driver)clazz.newInstance();
//2.提供三个基本连接的信息
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
//3.注册驱动
DriverManager.registerDriver(driver);
//4.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
//方式四:只用加载驱动,不用显示注册驱动
@Test
public void testConnection4() throws Exception {
//1.提供三个基本连接的信息
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "123456";
//2.加载Driver
//相较于方式三可以省略如下步骤:(在mysql的Driver实现类中声明了驱动的注册)
Class clazz = Class.forName("com.mysql.jdbc.Driver");
// Driver driver = (Driver)clazz.newInstance();
// //3.注册驱动
// DriverManager.registerDriver(driver);
//4.获取连接
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println(conn);
}
//方式五(final版):将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接
//好处:
//1.实现数据与代码的分离,实现了解耦
//2.需要修改配置文件信息时,可以避免程序重新打包
@Test
public void getConnection() throws Exception {
//1.读取配置文件中的配置信息
InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
Properties pros = new Properties();
pros.load(is);
String user = pros.getProperty("user");
String password = pros.getProperty("password");
String url = pros.getProperty("url");
String driverClass = pros.getProperty("driverClass");
//2.加载驱动
Class.forName(driverClass);
//3.获取连接
Connection conn = DriverManager.getConnection(url,user,password);
System.out.println(conn);
}
}
注:方式五中配置文件声明在工程的src目录下:【jdbc.properties
】
user=root
password=123456
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver
你电脑上一定要装数据库,没有的话,都是白做,上面的用户名和密码根据自己的数据库情况来
感谢大家的支持,关注,评论,点赞!
参考资料:尚硅谷_宋红康_JDBC核心技术