您的位置:首页 > 数据库

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

2016-12-25 11:21 781 查看

一、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"。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: