JDBC学习笔记及连接数据库的实现过程

6 篇文章 0 订阅
2 篇文章 0 订阅

一、JDBC基础

1、持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用。大多数情况下,数据持久化意味着将内存中的数据保存到硬盘上加以”固化”,而持久化的实现过程是通过各种关系数据库来完成。

2、持久化的主要应用是将内存中的数据存储在关系型数据库中,当然也可以存储在磁盘文件、XML数据文件中。 


3、在Java中,数据库存取技术可分为如下几类:
//JDBC直接访问数据库
//JDO技术
//第三方O/R工具,如Hibernate, ibatis 等(这些的底层仍然是JDBC,更好的封装了JDBC)
说明:JDBC是java访问数据库的基石,JDO, Hibernate等只是更好的封装了JDBC。
4、JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,使用这个类库可以以一种标准的方法、方便地访问数据库资源
5、JDBC是面向接口的编程,为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
6、JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,从而简化和加快了开发过程。

7、JDBC接口(API)包括两个层次:
 面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。
8、JDBC驱动程序:各个数据库厂商根据JDBC的规范制作的 JDBC 实现类的类库 ,JDBC驱动程序总共有四种类型:
第一类:JDBC-ODBC桥。 
第二类:部分本地API部分Java的驱动程序。 
第三类:JDBC网络纯Java驱动程序。 
第四类:本地协议的纯 Java 驱动程序。 
说明:第三、四两类都是纯Java的驱动程序,因此,对于Java开发者来说,它们在性能、可移植性、功能等方面都有优势。 

9、Driver 接口
java.sql.Driver 接口是所有 JDBC 驱动程序需要实现的接口。这个接口是提供给数据库厂商使用的,不同数据库厂商提供不同的实现
在程序中不需要直接去访问实现了 Driver 接口的类,而是由驱动程序管理器类(java.sql.DriverManager)去调用这些Driver实现

10、可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接
11、JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。
12、JDBC URL的标准由三部分组成,各部分间用冒号分隔。 
jdbc:<子协议>:<子名称>
协议:JDBC URL中的协议总是jdbc 
子协议:子协议用于标识一个数据库驱动程序
子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息 
url - the URL of the database to which to connect
info - a list of arbitrary string tag/value pairs as connection arguments. Normally at least a "user" and "password" property should be included. 

二、JDBC连接数据库的实例:

1、Driver实现类方式

	/**
	 * Driver是每一个驱动实现的接口:数据库厂商必须提供的接口
	 * 能从其中获取数据库连接。
	 * 1、加入mysql驱动
	 * 	1)解压mysql-connector-java-5.1.7.zip 
	 * 	2)在当前项目下新建lib文件
	 * 	3)将解压后的mysql-connector-java-5.1.7-bin.jar赋值到lib文件下
	 * 	4)右键build-path,add to build path加入到类路径下
	 * @throws SQLException 
	 * */
	@Test
	public void testDriver() throws SQLException {
		//1、创建一个Driver实现类的接口
		Driver driver = new com.mysql.jdbc.Driver();
		
		//2、准备连接数据库的基本信息:url,user,password
		//Url的格式:jdbc:<子协议>:<子名称>
		//jdbc是连接数据库的固定协议
		//子协议:子协议用于标识一个数据库驱动程序(例如:mysql,microsoft:sqlserver,oracle)
		//子名称:一种标识数据库的方法
		//后边的test是数据库的名称
		String url = "jdbc:mysql://localhost:3306/test";
		Properties info = new Properties();
		
		info.put("user", "root");
		info.put("password", "123");
		System.out.println("111");
		//3、调用Driver接口的connect(url,info)获取数据库连接
		Connection connection = driver.connect(url, info);
		System.out.println(connection);			
	}

2、Driver实现类读取配置文件的方式

	/**
	 * 通用方法,在不修改源程序的情况下,获取任何数据库的连接。
	 * 解决方案:把数据库驱动Driver实现类的全类名、url,user,passwor放入
	 * 配置文件中,通过修改配置文件的方式实现和具体的数据库解耦。
	 * @throws Exception 
	 * @throws IllegalAccessException 
	 * @throws InstantiationException 
	 * 
	 * */
	public Connection getConnection() throws Exception{
		String driverClass = null;
		String jdbcUrl = null;
		String user = null;
		String password = null;
		
		//读取类路径下的jdbc.properties文件
		InputStream in = 
				getClass().getClassLoader().getResourceAsStream("jdbc_chz/jdbc.properties");
		Properties properties = new Properties();
		properties.load(in);
		driverClass = properties.getProperty("driver");
		jdbcUrl = properties.getProperty("jdbcUrl");
		user = properties.getProperty("user");
		password = properties.getProperty("password");
		
		//通过反射Driver对象
		Driver driver = (Driver) Class.forName(driverClass).newInstance();
		
		Properties info = new Properties();
		info.put("user", user);
		info.put("password", password);	
		//通过Connection获取Driver的连接。
		Connection connection = driver.connect(jdbcUrl, info);
		
		return connection;
	}
	@Test
	public void testGetConnection() throws Exception{
		System.out.println(getConnection());
	}

3、DriverManager类实现的一般方法

	/**
	 * DriverManager 是驱动的管理类一般实现方法
	 * 1)可以通过重载的getConnection()方法来获取数据库连接
	 * 2)可以同时管理多个驱动程序:若注册二轮多个数据库连接,则调用getConnection()方法时传入不同的参数,返回连接不同的数据库
	 * */
	@Test
	public void testDriverManager1() throws Exception{
		//1、准备连接数据库的字符串,驱动的全类名driverClass,url,user,password	
		String driverClass = "com.mysql.jdbc.Driver";
		String jdbcUrl = "jdbc:mysql://localhost:3306/test";
		String user = "root";
		String password = "123";
				
		//2、加载数据库驱动程序(注册驱动)
		DriverManager.registerDriver((Driver) Class.forName(driverClass).newInstance());
		
		Class.forName(driverClass);
		//3、通过国DriverManager的getConnection()方法获取数据库的连接
		Connection connection = 
				DriverManager.getConnection(jdbcUrl, user, password);
		System.out.println(connection);		
	}

4、DriverManager类实现读取配置文件的方法

	@Test
	public void testGetDriverManager2() throws Exception{
		System.out.println(getConnection());
	}

	public Connection testDriverManager2() throws Exception{
		//1.准备连接数据库的字符串
		//1.1创建Properties对象
		Properties p = new Properties();		
		//1.2获取jdbc.properties对应的输入流
		InputStream in = 
				this.getClass().getClassLoader().getResourceAsStream("jdbc_chz/jdbc.properties");		
		//1.3加载输入流
		p.load(in);
		//1.4具体定义user,password等字符串
		String user = p.getProperty("user");
		String password = p.getProperty("password");
		String jdbcUrl = p.getProperty("jdbcUrl");
		String driver = p.getProperty("driver");
		//2.加载数据库驱动程序(对应的Driver实现类中有注册驱动的静态代码块)
		Class.forName(driver);
		//3.通过DriverManager的getConnection()方法获取数据库连接
		return DriverManager.getConnection(jdbcUrl, user, password);
	}
说明:建议还是选择DriverManager类实现读取配置文件的方式比较通用。

符:

1、需要的配置文件的jdbc.properteis文件的内容如下

driver=com.mysql.jdbc.Driver
jdbcUrl=jdbc:mysql://localhost:3306/test
user=root
password=123

2、jdbc.properties文件的存放位置

3、mysql-connector-java-5.1.7-bin.jar

在使用mysql时,要添加mysql的一个.jar文件,先建立一个lib文件夹,然后将该.jar文件复制到lib文件夹下,如上图中“突出”表示的文件“mysql-connector-java-5.1.7-bin.jar"。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值