1、JDBC 的概述
1.1 jdbc 是什么
JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的公共接口(一组API),定义了用来访问数据库的标准Java类库,(java.sql,javax.sql)使用这个类库可以以一种标准的方法、方便地访问数据库资源
- JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
- JDBC的目标是使Java程序员使用JDBC可以连接任何提供了JDBC驱动程序的数据库系统,这样就使得程序员无需对特定的数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
1.2 jdbc 与 数据库的连接方式:
规范化的jdbc 连接数据库方式:
1.3 JDBC 体系结构
JDBC接口(API)包括两个层次:
- 面向应用的API:Java API,抽象接口,供应用程序开发人员使用(连接数据库,执行SQL语句,获得结果)。
- 面向数据库的API:Java Driver API,供开发商开发数据库驱动程序用。
JDBC是sun公司提供一套用于数据库操作的接口,java程序员只需要面向这套接口编程即可。不同的数据库厂商,需要针对这套接口,提供不同实现。不同的实现的集合,即为不同数据库的驱动。————面向接口编程
1.4 JDBC API
JDBC API 是一系列的接口,它使得应用程序能够进行数据库联接,执行SQL语句,并且得到返回结果。
2、获取数据库连接
2.1 连接参数与协议
(1)可以调用 DriverManager 类的 getConnection() 方法建立到数据库的连接
(2)User,password可以用“属性名=属性值”方式告诉数据库;
(3)JDBC URL 用于标识一个被注册的驱动程序,驱动程序管理器通过这个 URL 选择正确的驱动程序,从而建立到数据库的连接。
(4)JDBC URL的标准由三部分组成,各部分间用冒号分隔。
- jdbc:子协议:子名称
- 协议:JDBC URL中的协议总是jdbc
- 子协议:子协议用于标识一个数据库驱动程序
- 子名称:一种标识数据库的方法。子名称可以依不同的子协议而变化,用子名称的目的是为了定位数据库提供足够的信息。包含主机名(对应服务端的ip地址),端口号,数据库名
2.2 几种常用数据库的JDBC URL
3、JDBC连接数据库的5中方式
注意:
- 安装数据库 - 服务必须开启
- 需要导入数据库的驱动
连接数据库的五种方式:
代码:
3.1 方式1 :
/*
* 数据库的连接:
* 1.必须保证数据库是安装好的,服务是启动的
* 2.必须将驱动添加到项目中
* 3.必须保证数据库的账号和密码是对的
* 4.必须保证数据库的版本和驱动的一样。
*/
/*
* 连接方式一 :通过多态的方式获取连接驱动
*/
@Test
public void test() throws Exception{
//多态 : 左边是接口的类型,右边是接口的实现
Driver driver = new com.mysql.jdbc.Driver();
//数据库连接的url
String url = "jdbc:mysql://localhost:3306/test";
//设置数据库的账号和密码
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "root");
//数据库的连接
Connection connect = driver.connect(url, info);
System.out.println(connect);
}
3.2 方式2 :通过反射获取对象
/*
* 连接方式二:通过反射获取对象
* 体会面向接口的编程思想
*/
@Test
public void test2() throws Exception{
Class clazz = Class.forName("com.mysql.jdbc.Driver");
Object obj = clazz.newInstance();
//多态 : 左边是接口的类型,右边是接口的实现
Driver driver = (Driver) obj;
//数据库连接的url
String url = "jdbc:mysql://localhost:3306/test";
//设置数据库的账号和密码
Properties info = new Properties();
info.setProperty("user", "root");
info.setProperty("password", "root");
//数据库的连接
Connection connect = driver.connect(url, info);
System.out.println(connect);
}
3.3 方式3 : 通过DriverMananger获取数据库的连接
/*
* 连接方式三:通过DriverMananger获取数据库的连接
*
* 使用DriverMananger有两个操作
* 1.注册驱动
* 2.获取连接
*
*
*/
@Test
public void test3() throws Exception{
Class clazz = Class.forName("com.mysql.jdbc.Driver");
Object obj = clazz.newInstance();
//多态 : 左边是接口的类型,右边是接口的实现
Driver driver = (Driver) obj;
//数据库连接的url
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
/*
* mysql可以不用注册,其它的数据库必须进行注册
* 这一步不要省。
*/
//注册驱动
DriverManager.registerDriver(driver);
//数据库的连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
}
3.4 方式4 : mysql驱动默认会进行驱动的注册
/*
* 连接方式四:mysql驱动默认会进行驱动的注册
*
*/
@Test
public void test4() throws Exception{
//数据库连接的url
String url = "jdbc:mysql://localhost:3306/test";
String user = "root";
String password = "root";
/*
* mysql可以不用注册,其它的数据库必须进行注册
* 这一步不要省。
*/
Class clazz = Class.forName("com.mysql.jdbc.Driver");
//数据库的连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
}
3.5 方式5 : 使用配置文件获取数据库的连接
/*
* 方式五:使用配置文件获取数据库的连接
*/
@Test
public void test5() throws Exception{
//读取配置文件中的内容
/*
* 实际上是从bin目录下读取的配置文件
*/
InputStream is = this.getClass().getClassLoader()
.getResourceAsStream("sqlDriver.properties");
Properties ps = new Properties();
ps.load(is);
String user = ps.getProperty("user");
String password = ps.getProperty("password");
String driverClass = ps.getProperty("driverClass");
String url = ps.getProperty("url");
is.close();
// 创建Driver对象
Class clazz = Class.forName(driverClass);
Object obj = clazz.newInstance();
Driver driver = (Driver) obj;
//注册驱动
DriverManager.registerDriver(driver);
//数据库的连接
Connection connection = DriverManager.getConnection(url, user, password);
System.out.println(connection);
}