JAVA学习笔记——JDBC概述、获取数据库连接

1 JDBC概述

1.1 数据持久化

持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多
数情况下,特别是企业级应用,数据持久化意味着将内存中的数据保存到硬盘
上加以”固化”,而持久化的实现过程大多通过各种关系数据库来完成。
在这里插入图片描述
大文件一般用数据库存储,小文件可以是文件存储。

1.2 jdbc介绍

JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统。
JAVA程序连接数据库情况:
在这里插入图片描述

  1. JDBC ,如何使用JAVA应用程序操作数据库的一个规范。
  2. 意义在于定义了一种规范能操作不同的数据库。
  3. JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接口编程即可。不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。

1.3 jdbc程序访问数据库步骤

在这里插入图片描述
在这里对插入图片描述
1.加载驱动:导入驱动jar包 mysql-connector-java-5.1.37-bin.jar
(1)复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下
(2)右键–>Build path ->add to Build path
2.注册驱动:Driver driver = new com.mysql.jdbc.Driver();(用的mysql的驱动去连接mysql数据库
3.获取数据库连接对象 Connection(就是连接上数据库,连接对象不为空就是连接上了
4.定义sql语句
5.获取执行sql语句的对象 Statement(对数据库进行增删改查
6.查操作就会返回结果集,ResultSet对象(万事万物皆对象。增删改就是更新
7.关闭所有资源

2 获取数据库连接

java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现。(就是说所有商家的驱动都按照这个接口去实现

2.1 方式一

package com.atguigu.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 testConnection1() throws SQLException {
		//获取Driver实现类对象,由具体的数据库厂商提供
		Driver driver = new com.mysql.jdbc.Driver();//实现的了jdbc的标准,加载mysql的驱动。
		//jdbc:mysql:协议
		//localhost IP地址
		//:3306 默认mysql的端口号
		//:test 数据库
		
		String url = "jdbc:mysql://localhost:3306/test"; //连接的哪一个数据库,路径
		//将用户名和密码封装在Properties中
		Properties info = new Properties();
		info.setProperty("user", "root");
		info.setProperty("password","root");
		Connection conn = driver.connect(url,info);//返回的就是一个Connection一个连接对象。
		System.out.println(conn);//连接对象为空表示已经连上test数据库。
	}
}

2.2 方式二

最开始获取什么类型的数据库连接我们可能不知道,这里使用反射实现动态获取。
运行需要把方式一中的包导入

//方式二:对方式一的迭代:在如下的程序中不出现第三方的api,使得程序具有更好的可移植性

@Test
public void testConnection2() throws Exception {
	//1.获取Driver实现类对象,使用反射创建Class实例
	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","root");
	//4.获取连接
	Connection conn = driver.connect(url,info);//返回一个连接对象
	System.out.println(conn);
}

2.3 方式三

使用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 = "root";
		
		//注册驱动
		DriverManager.registerDriver(driver);
		//获取连接
		Connection conn = DriverManager.getConnection(url,user,password);
		System.out.println(conn);
	}

2.4 方式四

在方式三的基础上进行优化。可以只是加载驱动,不用显示的注册驱动了

@Test
		public void testConnection4() throws Exception {
			//1.提供另外三个连接的基本信息
			String url ="jdbc:mysql://localhost:3306/test";
			String user = "root";
			String password = "root";
			
			//2.获取Driver实现类对象,使用反射,静态代码块随着类的加载而执行
			Class.forName("com.mysql.jdbc.Driver()"); //把mysql中的Driver类加载到内存中
			//相较于方式三。可以省略如下操作
//			Driver driver = (Driver) clazz.newInstance();	
//			//注册驱动
//			DriverManager.registerDriver(driver); // mysql 自己实现了驱动注册,不需要我们去注册
			
			//3获取连接
			Connection conn = DriverManager.getConnection(url,user,password);
			System.out.println(conn);
		}

静态代码块随着类的加载而执行(省略部分在类的加载的时候就已经被执行,所以不用再自己手动写一遍)。
在这里插入图片描述

2.5 方式五(最终版)

将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接。(优化代码,增强代码健壮性)
1、在src下建立jdbc.properties文件。写入4个基本信息

user=root
password=root
url=jdbc:mysql://localhost:3306/test
driverClass=com.mysql.jdbc.Driver

2、加载jdbc.properties文件,运行代码

//方式五(最终版)将数据库连接需要的4个基本信息声明在配置文件中,通过读取配置文件的方式,获取连接
		public void getConnection5() throws Exception {
			//1.读取配置文件的4个基本信息
			//获取类的加载器
			InputStream is = ConnectionTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
			Properties pros = new Properties();
			//加载这个文件
			pros.load(is);
			//取4个基本值
			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);
		}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值