转载至: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
String url = "jdbc:mysql://127.0.0.1:3306/dbname";
Connection connection =
    DriverManager.getConnection(url);

url是数据库的URL。不同的数据库url值不一样,上面是MySQL数据库的URL。

使用URL,用户名和密码打开连接

第二种方法将数据库的URL,用户名和密码作为参数。

1
2
3
4
5
String url = "jdbc:mysql://127.0.0.1:3306/dbname";
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
String url = "jdbc:mysql://127.0.0.1:3306/dbname";
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 url = "jdbc:mysql://127.0.0.1:3306/dbname";
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 连接的更多相关文章

  1. JDBC连接SQL Server代码模板

    *                  JDBC连接SQL Server数据库 代码模板* Connection: 连接数据库并担任传送数据的任务:* Statement :  执行SQL语句:* Re ...

  2. JDBC连接MySQL数据库代码模板

    下面这个例子是最简单的JDBC连接MySQL数据库的例子. 一般步骤: 1.注册驱动: 2.建立连接: 3.创建语句: 4.处理结果: 5.释放资源. 注意: 1.软件开发环境:MyEclipse 8 ...

  3. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  4. Field 'id' doesn't have a default value(jdbc连接错误)

    JDBC 连接错误: 编写数据库连接增添数据时,出现以下错误: error : java.sql.SQLException: Field 'id' doesn't have a default val ...

  5. JDBC连接MySQL 方法 实例及资料收集

    JDBC连接MySQL 方法 实例及资料收集 准备工作 首先,安装MySQL,配置用户名和密码,创建数据库. 可参见之前的文章: http://www.cnblogs.com/mengdd/p/315 ...

  6. java jdbc 连接mysql数据库 实现增删改查

    好久没有写博文了,写个简单的东西热热身,分享给大家. jdbc相信大家都不陌生,只要是个搞java的,最初接触j2ee的时候都是要学习这么个东西的,谁叫程序得和数据库打交道呢!而jdbc就是和数据库打 ...

  7. Java使用JDBC连接MySQL数据库

    1.引用 JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写 ...

  8. jdbc连接oracle数据库

    /*** 通过改变配置文件来连接不同数据库*/package com.xykj.jdbc; import static org.junit.Assert.*; import java.io.Input ...

  9. JDBC连接各种数据库的字符串,就是不好记

    JDBC连接各种数据库的字符串大同小异,在此总结一下,备忘. oracle    driverClass:oracle.jdbc.driver.OracleDriver    url:jdbc:ora ...

  10. Crystal Reports 2008(水晶报表) JDBC连接mysql数据库

    在本blog中,主要介绍的是Crystal Reports 2008使用JDBC连接mysql数据库. 在连接之间,首先要确认你电脑上面都安装了mysql数据库. 其次,就是jdbc连接数据时候所使用 ...

随机推荐

  1. Day 2 上午

    内容提要: 二叉搜索树 二叉堆 区间RMQ问题 二叉搜索树 前置技能本节课可能用到的一些复杂度:O(log n). n/1+n/2+...+n/n=O(n log n) 入门题: 给出N次操作,每次加 ...

  2. MySQL学习基础知识2

    1.基础语句 查 select(* | 字段名 | 四则运算 | 聚合函数) from 表名称; 加上as取别名 as可省略 如:select name, (math+english)/2 total ...

  3. 解决liblapack.so.3: cannot open shared object file: No such file or directory报错

    关于这种类型的报错通常的解决方式有两个: 方法一.查找系统哪儿有liblapack.so.3这个文件 find /lib -name liblapack.so.3 如果lib找不到这个文件,请换其他路 ...

  4. lumen 支持多文件上传

    1.webform (注意:name后面一定要加[]号) <form method="post" enctype="multipart/form-data" ...

  5. Tomcat系列(8)——Tomcat运行模式连接数和线程池

    Connector的主要功能,是接收连接请求,创建Request和Response对象用于和请求端交换数据:然后分配线程让Engine(也就是Servlet容器)来处理这个请求,并把产生的Reques ...

  6. Swift 之cannot load module 'main' as 'Swift'

    如果建立一个Project, 选Command Line程序,语言选Swift, 完成之后会有一个main.swift文件.这个文件用来练算法最好了,因为playground会有各种限制而且bug多多 ...

  7. 通过DeviceIoControl读磁盘的方式读取独占文件内容

    前言 windows操作系统中常见的一个文件存储系统是NTFS.在这个文件系统中MFT是它的核心.             图一 MFT是一个数据结构,上图是它的结构,它主要用来存放每个文件和目录在磁 ...

  8. JDK8源码阅读之Collection及相关方法

    最近面试总会被问到JDK8中的一些新特性,所以闲下来抽时间看了一下8的源码,目前主要看的是数据结构部分,特此记录一下. 新增函数式接口,实现该接口的可以直接用lambda表达式. default和st ...

  9. httpClient closeableHttpClient

    https://www.cnblogs.com/lyy-2016/p/6388663.html

  10. 《NFC开发实战详解》笔记

    地点:30教 5楼 男厕对面 * 时间:下午三点 * 天气:中雨 * 状态:3    * ******************************************************* ...