JDBC 连接
转载至:https://www.liyongzhen.com/
在这一小节,我们将学习DriverManager对象和connection对象。
DriverManager对象用于从驱动里获取一个connection对象。
而connection对象功能颇多,可管理连接、管理事务、建立语句对象等。
加载JDBC驱动程序
在打开与数据库的JDBC连接之前,您需要做的第一件事是加载数据库的JDBC驱动程序。现在已经不需要程序员做这些事啦,因为从Java 6开始,Java 已经内置这步操作。
Java之前是这样加载JDBC驱动程:
语法:
1
|
Class.forName( "driverClassName" ); |
加载MySQL数据库:
1
|
Class.forName("com.mysql.jdbc.Driver"); |
打开JDBC连接
可以通过调用java.sql.DriverManager类方法getConnection()打开JDBC Connection。 这种方法有三种花样。
使用URL打开连接
第一种方法仅将数据库的URL作为参数。
1
2
3
|
Connection connection = DriverManager.getConnection(url); |
url是数据库的URL。不同的数据库url值不一样,上面是MySQL数据库的URL。
使用URL,用户名和密码打开连接
第二种方法将数据库的URL,用户名和密码作为参数。
1
2
3
4
5
|
String user = "root" ; String password = "123456" ; Connection connection = DriverManager.getConnection(url,user,password); |
user和password参数是数据库的用户名和密码。
使用URL和Properties对象打开连接
第三种方法是将数据库URL和Properties对象作为参数
1
2
3
4
5
6
|
Properties properties = new Properties( ); properties.put( "user" , "root" ); properties.put( "password" , "123456" ); Connection connection = DriverManager.getConnection(url, properties); |
Properties对象用于在打开连接时传递数据库所需的特殊属性。
关闭JDBC连接
当JDBC操作完成(执行完查询、删除、修改)后,应关闭它。
关闭连接有两种花样。
普通的close方法
这是通过调用Connection.close()方法完成的,如下所示:
1
|
connection.close(); |
数据库连接占用了一定数量的资源,因此关闭JDBC连接非常重要。
通过Try-With-Resources关闭连接
可以通过Java 7中添加的Java Try-with-resources自动关闭JDBC Connection 。下面的示例演示那如何使用Try-with-resources关闭连接:
1
2
3
4
5
6
7
8
9
|
String user = "root" ; String password = "123456" ; try (Connection connection = DriverManager.getConnection(url, user, password)) { //其它业务代码 } |
Connection在try块的括号内打开。
在try语句块中,可以像往常一样使用数据库连接。
一旦执行退出try块,Connection将自动关闭。
这样就不会忘记自己关闭Connection。
事务
事务的概念是:所有的操作要么同时成功,要么同时失败。
在JDBC里执行事务需要两步:先开户事务,再提交事务。如果事务失败,就产生事务回滚(所有的操作都捎回)。
在JDBC里有两种方式执行事务:一是自动执行,二是手动执行。
自动执行事务
Connection默认是自动提交事务,也可以手动开户自动提交事务。
1
|
connection .setAutoCommit( true ); |
手动执行事务
Connection setAutoCommit()方法,当参杂是false时,是手动提交事务。
在手动提交模式,则必须通过调用Connection commit()方法显式提交每个数据库事务。
1
2
3
4
5
|
connection.setAutoCommit( false ); // 其它业务代码 connection.commit(); |
回滚
如果事务执行失败时,就会触发回滚操作,所有的操作都取消。
1
2
3
4
5
6
7
8
9
|
try { connection.setAutoCommit( false ); //开启手动提交事务 // 其它业务代码 connection.commit(); } catch (SQLException e) { // 产生异常 connection.rollback(); // 事务回滚 } |
建立语句
Connection 可建立Statement对象和PreparedStatement对象。
Statement对象
Statement对象可用于对数据库执行SQL更新 ,或对数据库执行SQL查询 。
1
|
Statement statement =connection.createStatement(); |
PreparedStatement对象
PreparedStatement对象,叫预处理对象,PreparedStatement对象可以对数据库执行SQL更新,或对数据库执行SQL查询。
1
|
PreparedStatement pre = connection.prepareStatement(sql); |
元数据对象
Connection 对象可以获取DatabaseMetaData对象,DatabaseMetaData对象可以获取数据库的相关信息,比如:表、主键、列、索引等。
1
|
DatabaseMetaData metaData = connection.getMetaData(); |
JDBC 连接的更多相关文章
- JDBC连接SQL Server代码模板
* JDBC连接SQL Server数据库 代码模板* Connection: 连接数据库并担任传送数据的任务:* Statement : 执行SQL语句:* Re ...
- JDBC连接MySQL数据库代码模板
下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...
- Java操作Sqlite数据库-jdbc连接
Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...
- Field 'id' doesn't have a default value(jdbc连接错误)
JDBC 连接错误: 编写数据库连接增添数据时,出现以下错误: error : java.sql.SQLException: Field 'id' doesn't have a default val ...
- JDBC连接MySQL 方法 实例及资料收集
JDBC连接MySQL 方法 实例及资料收集 准备工作 首先,安装MySQL,配置用户名和密码,创建数据库. 可参见之前的文章: http://www.cnblogs.com/mengdd/p/315 ...
- java jdbc 连接mysql数据库 实现增删改查
好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...
- Java使用JDBC连接MySQL数据库
1.引用 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...
- jdbc连接oracle数据库
/*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...
- JDBC连接各种数据库的字符串,就是不好记
JDBC连接各种数据库的字符串大同小异,在此总结一下,备忘. oracle driverClass:oracle.jdbc.driver.OracleDriver url:jdbc:ora ...
- Crystal Reports 2008(水晶报表) JDBC连接mysql数据库
在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...
随机推荐
- [BJOI2017]树的难题
题目描述 给你一棵 n 个点的无根树. 树上的每条边具有颜色.一共有 m 种颜色,编号为 1 到 m.第 i 种颜色的权值为 ci. 对于一条树上的简单路径,路径上经过的所有边按顺序组成一个颜色序列, ...
- mac查看git路径
mac查看git路径
- git 本地项目推到远程仓库
…or create a new repository on the command line echo "# blog" >> README.mdgit initgi ...
- HBase海量数据存储
1.简介 HBase是一个基于HDFS的.分布式的.面向列的非关系型数据库. HBase的特点 1.海量数据存储,HBase表中的数据能够容纳上百亿行*上百万列. 2.面向列的存储,数据在表中是按照列 ...
- python 玩耍天地
词云 wordcloud wordcloud轮子下载 下载上面链接里对应的 whl (我选的 xxx_win32.whl)到 本地 进行安装 一般地, 会结合 jieba 分词 还有 matplotl ...
- jvm经典文章整理
Java中JVM虚拟机详解 Java GC的那些事(上)(博主还有很多文章都很经典) CMS垃圾收集器介绍
- PMP知识点(六)——项目经理权利类型
社会心理学家约翰.弗伦奇(John.French)和伯特伦.雷文(Bertram.Raven)在他们1959年发表的一篇迄今不朽的论文中,提出了五种权力类别的模型,这个模型折射出权力拥有者依赖的不同基 ...
- 通过<meta>标签指定IE的文档模式实现CSS3兼容
今天发现之前做好的一个页面在IE中打开显示的效果不正常,本地和服务器上显示的是两种不同的样式. 经过确认文档内容和CSS都是一样的. 通过IE F12(开发人员工具)发现不正常的样式 浏览器文档模式自 ...
- Python核心编程笔记 第三章
3.1 语句和语法 3.1.1 注释( # ) 3.1.2 继续( \ ) 一般使用换行分隔,也就是说一行一个语句.一行过长的语句可以使用反斜杠( \ ) 分 ...
- 【题解】狼抓兔子—BZOJ1001。
(胡扯时间)今天炒鸡无聊就打算BZOJ开始从第一道题开始顺着打,这样未来一段时间内也就有事干了.结果发现A+B切掉后就遭遇了一个"小小"的瓶颈(真不友好. 好了说题说题.看题第一眼 ...