JDBC-day01(JDBC概述,获取数据库连接)

一:JDBC概述

1.数据持久化

  • 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成
  • 简单来说,数据持久化就是将数据保存到数据库或硬盘的过程
    JDBC-day01(JDBC概述,获取数据库连接)_第1张图片

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-day01(JDBC概述,获取数据库连接)_第2张图片
  • JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。

JDBC-day01(JDBC概述,获取数据库连接)_第3张图片

  • JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。

4.JDBC体系

JDBC接口(API)包括两个层次:

  • 面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
    • JDBC是Java维护公司提供一套用于数据库操作的接口,java程序员只需要面向Java API即可。
  • 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。
    • 不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。

5.JDBC的编程过程

JDBC-day01(JDBC概述,获取数据库连接)_第4张图片

二:获取数据库连接

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地址),端口号,数据库名

    JDBC-day01(JDBC概述,获取数据库连接)_第5张图片

3.jar包的安装

数据库的jar包就提供了数据库厂商负责实现与使用的数据库驱动
mysql-connector-java-5.1.37-bin.jar
将上述jar包(mysql5.1.37)拷贝到Java工程的一个目录中,习惯上新建一个lib文件夹。
在驱动jar上右键–>Build Path–>Add to Build Path
JDBC-day01(JDBC概述,获取数据库连接)_第6张图片
JDBC-day01(JDBC概述,获取数据库连接)_第7张图片

注意:如果是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核心技术

你可能感兴趣的:(Java,数据库,jdbc)