JDBC(1)—Connection
- 一、简介:
- 1.JDBC(Java Database Connectivity)是一个独立于特定数据库管理系统、通用的SQL数据库存取和操作的
*公共接口(一组API)
*定义了用来访问数据库的标准java类库,使用这个类库可以以一种标准的方法,方便的访问数据库资源。 - 2.JDBC为访问不同的数据库提供了一种统一的途径,为开发者屏蔽了一些细节问题。
- 3.JDBC的目标是使java程序员使用jdbc可以连接任何提供了JDBC驱动程序的数据库系统,这样使得java程序员无需对
*特定的数据库
*系统的特点有过多的了解,从而简化开发过程。 - 4.可以调用DriverManager类的getConnection()方法建立到数据库的连接。
- 5.JDBC URL用于标识一个被注册的驱动程序,驱动程序管理器通过这个url选择正的驱动程序,从而建立到数据库连接。
- 6.url由三部分组成各部分之间用 冒号分割
*——jdbc:<子协议>:<子名称>
*——协议:JDBC URL中的协议总是jdbc.
*——子协议:子协议用于标识一个数据库驱动程序
*——子名称:一种标识数据库的方法 ,子名称可以依不同的子协议而变化,使用子名称的目的就是问了定位数据库提供足够的信息
*例如(每一种数据库的各个版本之间可能会有些变化):
*连接mysql数据库:jdbc:mysql://localhost:3306/test
*连接SQL Server数据库:jdbc:microsoft:sqlserver//localhost:1433;DatabaseName = test
*连接Oracle数据库:jdbc:oracle:thin:@localhost:1521:test - 二、步骤
- 连接Mysql的准备:
- 1.添加jar文件(mysql-connector-java-5.1.26-bin.jar)
- 2.加载到当前的类路径下(右键jar文件,Builder Path–add builder path)
- 3.创建Driver实现类的对象
- 4.Driver实现类对象调用connect(url , info)方法,返回数据库连接(connection)
以下共有四个连接数据库的方法:
1.testDriver():该方法使用驱动对象(driver)建立连接,可重用性差,耦合性高,但代码简单,易于理解。
2.getConnection():该方法在上一个方法的基础上进行了修改,不过还是通过驱动对象建立连接(driver),
*比如:把连接数据库的url、账号、密码写道配置文件中,程序再读取配置文件,通过反射加载驱动,并创建驱动对象,3.testDriverManager():该方法使用驱动管理类的getConnection()方法建立连接,在上一个方法的基础上进行了修改,
*修改了加载驱动的方法,因为使用了驱动管理类,所以不需要创建驱动对象,减少了代码量。4.getDriverManager():该方法是对以上几个方法一个总结,相对来说少代码,高重用性,低耦合
第一种方法:
/**
* 1.简单连接数据库
* 在使用的过程中并不建议直接访问该接口,在此只是练习演示。
* Driver是一个接口,数据库厂商必须提供实现的接口,能从中获取数据库连接,
* 步骤:
* 1.创建数据库驱动对象
* 2.准备数据库连接的url、user、password
* 3.数据库驱动对象调用connect(url , info)方法建立连接
*/
@Test
public void testDriver() throws Exception{
//1.驱动
Driver driver = new com.mysql.jdbc.Driver();
//2.准备url,账号、密码
String url = "jdbc:mysql://127.0.0.1:3306/test";//test数据库首先要在创建好之后才可以连接
Properties info = new Properties();
info.put("user", "root");
info.put("password", "");
//3.建立链接
Connection connection = driver.connect(url , info);
System.out.println(connection);
}
第二种方法:
/**
* 2.对以上方法进行修改优化,在不改变源程序的情况下,可以获得任何数据库连接
* 解决方案:把数据库驱动Driver实现类是全类名、url、user、passworld放到一个配置文件中,
*通过修改配置文件的方式实现的具体数据库的解耦。
*步骤:
*1.准备url、账号、密码、驱动的全类名的字段
*2.通过反射加载配置文件
*3.通过getProperty()获取配置文件中的信息
*4.通过反射创建驱动程序对象(链接数据库需要用到该对象,所以要创建)
*5.驱动对象调用connect(jdbcUrl, info)建立连接
*/
public Connection getConnection() throws Exception{
//1.准备字段
String driverClass = null;
String jdbcUrl = null;
String user = null;
String password = null;
//2.通过反射,读取类路径下的jdbc.properties文件,获取配置信息。
InputStream is = getClass().getClassLoader().
getResourceAsStream("jdbc.properties");
Properties properties = new Properties();
properties.load(is);
//3.通过getProperty()方法,获取到每个字段的值,并赋给变量
driverClass = properties.getProperty("driver");
jdbcUrl = properties.getProperty("jdbcUrl");
user = properties.getProperty("user");
password = properties.getProperty("password");
//4.通过反射来进行创建驱动对象,这样就可以实现解耦。
//4_1.创建驱动程序对象
Driver driver = (Driver)Class.forName(driverClass).newInstance();
//4_2.账号密码
Properties info = new Properties();
info.put("user", user);
info.put("password", password);
//5.调用connect方法建立连接
Connection connection = driver.connect(jdbcUrl, info);
return connection;
}
/**
* 测试以上方法是否正确
* @throws Exception
*/
@Test
public void testGetConnection() throws Exception{
System.out.println(getConnection());
}
第三种方法:
/**
* 3.对以上方法再次进行修改优化。
* DriverManager是驱动的管理类,联系使用
* 步骤:
* 1.准备驱动的全类名、url、user、password字段
* 2.通过反射读取配置文件信息
* 3.通过反射加载数据库驱动程序(因为使用DriverManager,所以链接数据库不需要驱动程序对象,所以不需要创建)
* 4.使用DriverManager类的getConnection(jdbcUrl, user, password)方法建立连接
*/
@Test
public void testDriverManager() throws Exception{
//1.准备字段
String driverClass = null;
String jdbcUrl = null;
String user = null;
String password = null;
//2.读取类路径下的jdbc.properties文件,获取配置信息
InputStream is = getClass().getClassLoader().
getResourceAsStream("jdbc.properties");
Properties properties = new Properties();
properties.load(is);
driverClass = properties.getProperty("driver");
jdbcUrl = properties.getProperty("jdbcUrl");
user = properties.getProperty("user");
password = properties.getProperty("password");
//3.通过反射来进行创建驱动对象,这样就可以实现解耦。
//3_1.加载数据库驱动程序(注册一个驱动程序)
Class.forName(driverClass);
//4.调用connect方法建立连接
Connection connection = DriverManager.getConnection(jdbcUrl, user, password);
System.out.println(connection);
}
第四种方法:
/**
* 4.总结。
* 步骤:
* 1.准备链接数据库的4个字符串
* 1_1.创建Properties对象
* 1_2.获取jabc.properties对应的输入流
* 1_3.加载1_2对应的输入流
* 1_4.获取具体数据(Driver、url、user、password)
* 2.加载数据库驱动程序(对应的Driver实现类中有注册驱动的代码块)
* 3.通过DriverManager的getConnection()方法获取数据库链接
*
*/
public Connection getDriverManager() throws Exception{
//1_1.创建Properties对象
Properties properties = new Properties();
//1_2.获取jdbc.properties输入流
InputStream is = getClass().getClassLoader().
getResourceAsStream("jdbc.properties");
//1_3.加载对应发输入流
properties.load(is);
//1_4.获取具体信息
String user = properties.getProperty("user");
String password = properties.getProperty("password");
String jdbcUrl = properties.getProperty("jdbcUrl");
String driver = properties.getProperty("driver");
//2.加载数据库驱动程序
Class.forName(driver);
//3.通过DriverManager的getConnection()方法获取数据库链接,并返回
return DriverManager.getConnection(jdbcUrl, user, password);
}
/**
* 测试以上方法
*/
@Test
public void testGetConnection1(){
try {
System.out.println(getDriverManager());
} catch (Exception e) {
e.printStackTrace();
}
}
jdbc.properties配置文件
#连接mysql驱动,其中?characterEncoding=utf-8是为防止乱码
driver = com.mysql.jdbc.Driver
jdbcUrl = jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf-8
user = root
password =
#连接sqlserver2008驱动
#driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
#jdbcUrl = jdbc:sqlserver://127.0.0.1:1433;DatabaseName = SIMS
#user = sa
#password = admin
JDBC(1)—Connection的更多相关文章
- 跟着刚哥学习Spring框架--JDBC(六)
Spring的JDBC框架 Spring JDBC提供了一套JDBC抽象框架,用于简化JDBC开发. Spring主要提供JDBC模板方式.关系数据库对象化方式.SimpleJdbc方式.事务管理来简 ...
- SoapUI接口测试之JDBC(三)
JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用java语言编写的类和接口 ...
- 浅谈JDBC(一)
一.JDBC技术引言 1.什么是JDBC技术 提供了一套接口规范,利用java代码进行数据库操作. 2.JDBC技术的核心思想 对于程序员来说,代码访问数据库分为三个步骤:1.通过数据库的账号密码.2 ...
- JDBC(一)之细说JDBC
Properties info = new Properties();//要参考数据库文档 info.setProperty("user", "root"); ...
- JDBC(三)数据库连接池(DBCP、C3P0)
前言 这段时间状态有一点浮躁,希望自己静下心来.还有特别多的东西还没有学懂.需要学习的东西非常的多,加油! 一.JDBC复习 Java Data Base Connectivity,java数据库连接 ...
- JAVA基础-JDBC(一)
一.JDBC的简介 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,由与各种数据库都有着一套自己的规范,JAVA对其操 ...
- JDBC(四)
1 Apache DBUtils框架 1.1 DBUtils简介 commons-dbutils是Apache组织提供的一个开源JDBC工具类库,它是对JDBC的简单封装,学习成本非常低,并且使用db ...
- JDBC (三)
1 数据库连接池的原理 应用程序直接获取Connection的缺点: 缺点:用户每次请求都需要向数据库获取连接,而数据库创建连接通常需要消耗相对较大的资源,创建的时间较长.如果一个网站一天访问量是10 ...
- JDBC (二)
1 使用JDBC进行批处理 当需要向数据库发送一批SQL语句的时候,应该避免向数据库一条条的发送执行,而应该采用JDBC的批处理机制,以提高执行效率. 实现批处理的方式一: Statement.add ...
随机推荐
- Java用四种方法实现阶乘n! (factorial)
1. 引言 实现阶乘的方法很多,这边介绍四种方法,分别是递归,尾递归,循环和BigDecimal. 2. 代码 public class Test { public static void main( ...
- SpringMVC(3):DispatcherServlet详解
原文出处: 张开涛 3.1.DispatcherServlet作用 DispatcherServlet是前端控制器设计模式的实现,提供spring Web MVC的集中访问点,而且负责职责的分派,而且 ...
- linux 终端上网设置
原网址: https://www.aliyun.com/jiaocheng/215068.html 摘要:第一步,需要安装一个名为w3m的软件工具,打开终端,输入如下命令sudoapt-getinst ...
- poj2528贴海报,,
对于区间段的离散化需要注意一下,和点离散化不同 离散后如何识别一段区间还是一段区间,而不是两个顶点,就是如果两个点的距离大于1,就往离散的数据里插入一个中间值,即用三个点来表示一段区间 /* 离散化长 ...
- python3 + selenium 之警告和弹窗
获取警告框信息 texts = driver.switch_to_alert().text #获取警告文本 print(texts)#得到弹窗的文本消息,比如得到:请输入用户名! 使用switch_t ...
- python 全栈开发,Day89(sorted面试题,Pycharm配置支持vue语法,Vue基础语法,小清单练习)
一.sorted面试题 面试题: [11, 33, 4, 2, 11, 4, 9, 2] 去重并保持原来的顺序 答案1: list1 = [11, 33, 4, 2, 11, 4, 9, 2] ret ...
- python 全栈开发,Day67(Django简介)
昨日内容回顾 1. socket创建服务器 2. http协议: 请求协议 请求首行 请求方式 url?a=1&b=2 协议 请求头 key:value 请求体 a=1&b=2(只有p ...
- 步步为营-59-svn简介
说明:版本控制器Svn的使用,安装教程不再多说 VisualSVN-Server--项目经理 TortoiseSVN--右击的时候显示 VisualSVN-- visual studio中使用 1 搭 ...
- Rookey.Frame v1.0快速开发平台-整体介绍
Rookey.Frame v1.0是一套基于.NET MVC的极速开发框架,支持简单逻辑模块零代码编程.支持二次开发,具有高扩展性.高复用性.高伸缩性. 框架特点 (1)简单逻辑模块实现零代码编程,通 ...
- Codeforces 1000F One Occurrence 主席树|| 离线+线段树
One Occurrence 为什么我半年前这么菜呀, 这种场只A三题... 我们在主席树 || 线段树上维护每个数的右边和它一样的数在哪里, 然后就变成了区间求最大值. 注意加进去的时候要把它右边一 ...