JDBC是Java程序连接和存取数据库的应用程序接口(API),包括两个包:java.sql和javax.sql。

用JDBC访问数据库的一般步骤

1.建立数据源

2.装入JDBC驱动程序:使用Class.forName()显示加载驱动程序

3.建立连接

4.执行SQL语句

5.检索结果和关闭连接

例如连接MySQL的步骤:

Class.forName("com.mysql.jdbc.Driver");

String url = "jdbc:mysql://localhost:3306/db";

Connection con = DriverManager.getConnection(url, user, password);

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CUNCUR_UPDATABLE);

其中.TYPE_SCROLL_SENSITIVE是ResultSet类的静态常量,表示可滚动并且受其他更改影响。CUNCUR_UPDATABLE表示可以更新的ResultSet对象的并发模型。

数据库的事务处理

事务是指一系列的数据库操作,要么全做,要么全不做,是一个基本逻辑单元。事务有ACID四个属性,分别是原子性、一致性、隔离性、持久性。

多个用户并发的存取数据库时就可能产生多个事务同时存取同一事务的情况。可能出现不正确的数据,破坏数据库的一致性。典型的3类数据出错:

脏读:一个事务修改了某一行数据而未提交时,另一事务读取了该行数据。假如前一事务发送了回退,则后一事务将得到一个无效的值。

不可重复读:一个事务读取某一行数据行时,另一事务同时在修改此数据行。则前一事务在重复读取此行时将得到一个不一致的数据。

幻读:一事务查询某表时,另一事务恰好插入满足查询条件的数据行。则前一事务在重复读取满足条件的值时,将得到一个或多个额外的“影子”值。

JDBC支持5个隔离级别来设置事务。

使用保存点来控制回滚的位置。

关于保存点的方法主要有3个:

setSavepoint("名称“),releaseSavepoint("名称"),rollback("名称”)

数据库的优化技术

1.编译预处理:使用PreparedStatement类

2.调用存储过程:使用SQL建立的存储过程,定义CallableStatement对象

3.采用连接池

JDBC数据库的更多相关文章

  1. activemq 5.13.2 jdbc 数据库持久化 异常 找不到驱动程序

    原文:https://my.oschina.net/u/2284972/blog/662033 摘要: activemq jdbc 数据库持久化 异常 找不到驱动程序 Caused by: java. ...

  2. Spring——JDBC——数据库

    1.Spring 的数据访问哲学 数据访问的功能放到一个或者多个专注于此项任务的组件.这样的组件通常称为数据访问对象(data access object)DAO或者Repository. 为了避免应 ...

  3. Java封装JDBC数据库增、删、改、查操作成JAR文件,以供Web工程调用,适用于多种数据库

    废话不多说,直接上源代码,最后有使用方法,当然,也可以作为普通公用类使用,只是封装成JAR更方便使用. package db.util; import java.io.BufferedReader; ...

  4. Java JDBC 数据库链接小结随笔

    Java JDBC 数据库链接小结随笔 一.链接数据库的步骤 二.关于Statement  和  PrepareStatement 两者区别 用法 三.关于 ResultSet 的一些小结 四.自定义 ...

  5. JDBC数据库1

    数据库(Database)是按照数据结构来组织,存储,和管理数据的仓库.数据库有很多类型,从简单存储各种数据的的表格到能够储存大型数据的系统,在各方面得到了广泛的应用.数据库简介J.Martin给 数 ...

  6. [总结] JDBC数据库操作

    1.加载驱动--告诉驱动管理将使用哪一个数据库的驱动包. class.forName("com.mysql.jdbc.Driver"); 2.操作JDBC ADI完成数据库动作 D ...

  7. MySql连接JDBC数据库------借鉴的红客联盟的

    首先安装MySQL数据库,我安装的是MySQL5.5,具体安装步骤这里就不介绍了.需要提醒的是,如果安装进程一直停在start service那里,无法继续进行下去的话,请参照我的博文<安装My ...

  8. java jdbc数据库操作

    package shb.java.demo3; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQ ...

  9. web/jdbc数据库带实例名连接2008

    --------------------------数据库带实例名连接2008-------------------------------------<property name=" ...

  10. Java学习笔记--JDBC数据库的使用

    参考  hu_shengyang的专栏 : http://blog.csdn.net/hu_shengyang/article/details/6290029 一. JDBC API中提供的常用数据库 ...

随机推荐

  1. 解决SpringMVC拦截器中Request数据只能读取一次的问题

    解决SpringMVC拦截器中Request数据只能读取一次的问题 开发项目中,经常会直接在request中取数据,如Json数据,也经常用到@RequestBody注解,也可以直接通过request ...

  2. jquery的$(selector).each(function(index,element))和$.each(dataresource,function(index,element))的区别

    $(selector).each(function(index,element)) 定义和用法 each() 方法规定为每个匹配元素规定运行的函数. $(selector).each(function ...

  3. php+javascript实现的动态显示服务器运行程序进度条功能示例

    本文实例讲述了php+javascript实现的动态显示服务器运行程序进度条功能.分享给大家供大家参考,具体如下: 经常有这样的业务要处理,服务器上有较多的业务需要处理,需要分批操作,于是就需要一个提 ...

  4. Django之CBV\FBV

    FBV(function base views) 就是在视图里使用函数处理请求. 写一个FBV的实例:在views中代码 :就是写了个函数 def book(request): ''' :param ...

  5. 登录注册页面(连接MySQL8.0.15版本)

    原文链接:https://mp.weixin.qq.com/s?__biz=MzI4Njg5MDA5NA==&mid=2247483779&idx=1&sn=e23e68e96 ...

  6. L2-026 小字辈(dfs)

    本题给定一个庞大家族的家谱,要请你给出最小一辈的名单. 输入格式: 输入在第一行给出家族人口总数 N(不超过 100 000 的正整数) —— 简单起见,我们把家族成员从 1 到 N 编号.随后第二行 ...

  7. 解决layui table方法渲染时时间格式问题

    在显示时间时没有成功 ,{field:'showTime',title:'要显示的时间'} 崎岖过程就不详述了,直接上干货 @官网相关文档1.@官网相关文档2.@参考文章1.@参考文章2 浏览了很多资 ...

  8. adduser与useradd的区别

    问题:使用 useradd 创建用户,发现 /home 目录下没有自动创建关于用户的目录.所以做了一番调查研究 useradd是一个linux命令,但是它提供了很多参数在用户使用的时候根据自己的需要进 ...

  9. 切面编程AOP之KingAOP

    1. 在Nuget上安装KingAOP 2. 创建一个新的类 public class Test : IDynamicMetaObjectProvider { public DynamicMetaOb ...

  10. jmeter的各种调用

    1. 开发将dubbo协议的接口转化成了webservices后,jmeter直接添加http请求,输入网址就好,但是这种需要增加开发测试页面的工作量 2.jmeter自身无法调用zk连接服务器(Jm ...