JDBC学习总结(一)
JDBC类型 | Java类型 |
CAHR | String |
VARCHAR | String |
LONGVARCHAR | String |
NUMERIC | java.math.BigDecimal |
DECIMAL | java.math.BigDecimal |
BIT | Boolean |
BOOLEAN | Boolean |
TINYINT | byte |
SMALLINT | short |
INTEGET | int |
BIGINT | long |
REAL | float |
FLOAT | double |
BOUBLE | double |
BINARY | byte[] |
VARBONARY | byte[] |
LONGVARBINARY | byte[] |
DATE | java.sql.Date |
TIME | java.sql.Time |
TIMESTAMP | java.sql.Timestamp |
CLOB | Clob |
BLOB | Blob |
ARRAY | Array |
DISTINCT | mapping of underlying type |
STRUCT | struct |
REF | Ref |
DATALINK | java.net.URL |
JAVA_OBJECT | underlying Java class |
- try{
- Class.forName("com.mysql.jdbc.Driver");
- }catch(ClassNotFoundException e){
- System.out.println("找不到驱动程序类");
- e.printStackTrace();
- }
- jdbc:mysql://localhost:3306/test?userUnicode=true&characterEncoding=gbk.
- String url = "jdbc:mysql://localhost:3306/test?userUnicode=true&characterEncoding=gbk";
- String userName = "root";
- String password = "123456";
- try{
- Connection conn = DriverManager.getConnection(url,userName,password);
- }catch(SQLException e){
- System.out.println("Failed to get connection: "+e.getMessage());
- e.printStackTrace();
- }
- Statement stmt = conn.createStatement();
- PreparedStatement pstmt = conn.preparedStatement(sql);
- CallableStatement cstmt = conn.prepareCall("{CALL demoSp(?,?)}");
5)执行SQL语句
- ResultSet rs = stmt.executeQuery("SELECT * FROM ...");
- int rows = stmt.executeUpdate("INSERT INTO ...");
- boolean flag = stmt.execute(String sqlString);
- String name = rs.getString("name");
- String pass = rs.getString(1);
- finally{
- //关闭记录集
- if (null != rs){
- try{
- rs.close();
- }catch (SQLException e){
- e.printStackTrace();
- }
- }
- //关闭声明
- if (null != stmt){
- try {
- stmt.close();
- }catch (SQLException e){
- e.printStackTrace();
- }
- }
- //关闭连接对象
- if (null != conn){
- try{
- conn.close();
- }catch (SQLException e){
- e.printStackTrace();
- }
- }
- }
- conn.setAutoCommit(false);
2)将需要添加事务的代码放在try、catch块中:
- try{
- //需要添加事务的业务代码
- ...
- }catch(SQLException e){
- ...
- }
3)在try块内添加提交操作,表示操作无异常,提交事务:
- conn.commit();
4)在catch块内添加回滚事务,表示操作出现异常,撤销事务:
- conn.rollback();
5)设置事务提交方式为自动提交:
- conn.setAutoCommit(true);
在JDBC处理事务的过程中,也可以设置事务的回滚点,当事务回滚的时候,自动回滚到保存点。
- Savepoint savepoint = conn.setSavepoint();
- conn.rollback(savepoint);
- stmt.releaseSavepoint(savepoint);
注意:如要数据表支持事务,则在MySQL中建立的表类型为InnoDB。
- package com.yyq;
- import java.sql.Connection;
- import java.sql.DriverManager;
- import java.sql.PreparedStatement;
- import java.sql.SQLException;
- /**
- * Created by gao on 16-4-12.
- */
- public class Transaction {
- public static final String Driver = "com.mysql.jdbc.Driver";
- public static final String URL = "jdbc:mysql://localhost:3306/test";
- public static final String USER_NAME = "root";
- public static final String PASSWORD = "123456";
- public static void main(String[] args) {
- Connection conn = null;
- PreparedStatement pstmt = null;
- String sql = "INSERT INTO student(name,score,class) values(?,null,null)";
- String sql2 = "delete from student where id = 69";
- try {
- Class.forName(Driver);
- conn = DriverManager.getConnection(URL, USER_NAME, PASSWORD);
- conn.setAutoCommit(false);
- pstmt = conn.prepareStatement(sql);
- pstmt.setString(1,"testing");
- System.out.println("第一条语句执行....");
- pstmt.executeUpdate();
- pstmt = conn.prepareStatement(sql2);
- System.out.println("第二条语句执行....");
- pstmt.executeQuery();
- conn.commit();
- System.out.println("提交事务");
- }catch (ClassNotFoundException e){
- System.out.println("找不到驱动程序类");
- e.printStackTrace();
- }catch (SQLException e){
- try{
- conn.rollback();
- System.out.println("回退事务....");
- e.printStackTrace();
- }catch (SQLException e1){
- e1.printStackTrace();
- }
- }finally {
- try{
- conn.setAutoCommit(true);
- }catch (SQLException e){
- e.printStackTrace();
- }
- if (null != pstmt){
- try{
- pstmt.close();
- }catch (SQLException e){
- e.printStackTrace();
- }
- }
- if (null != conn){
- try {
- conn.close();
- }catch (SQLException e){
- e.printStackTrace();
- }
- }
- }
- }
- }
- try {
- conn.setAutoCommit(false);
- Statement stmt = conn.createStatement();
- stmt.addBatch("....");
- stmt.addBatch("....");
- .....
- stmt.executeBatch();
- conn.commit();
- }catch (SQLException e){
- try {
- conn.rollback();
- }catch (SQLException e1){
- e1.printStackTrace();
- }
- e.printStackTrace();
- }finally {
- try {
- conn.setAutoCommit(true);
- }catch (SQLException e){
- e.printStackTrace();
- }
- //关闭资源
- }
JDBC学习总结(一)的更多相关文章
- JDBC学习笔记(2)——Statement和ResultSet
Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement ...
- JDBC学习笔记(1)——JDBC概述
JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据库连接. JDBC库中所包含的API任务通常与数据库使用: 连接到数 ...
- 【转】JDBC学习笔记(2)——Statement和ResultSet
转自:http://www.cnblogs.com/ysw-go/ Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数 ...
- 【转】JDBC学习笔记(1)——JDBC概述
转自:http://www.cnblogs.com/ysw-go/ JDBC JDBC API是一个Java API,可以访问任何类型表列数据,特别是存储在关系数据库中的数据.JDBC代表Java数据 ...
- jdbc学习总结
jdbc学习总结: 一.简介: jdbc,直译为java连接数据库.实际为java为很好的操作数据库而提供的一套接口,接口的实现(即驱动)由各个数据库厂商提供. 二.知识要点: 连接5要素,3 ...
- JDBC 学习笔记(十一)—— JDBC 的事务支持
1. 事务 在关系型数据库中,有一个很重要的概念,叫做事务(Transaction).它具有 ACID 四个特性: A(Atomicity):原子性,一个事务是一个不可分割的工作单位,事务中包括的诸操 ...
- JDBC 学习笔记(十)—— 使用 JDBC 搭建一个简易的 ORM 框架
1. 数据映射 当我们获取到 ResultSet 之后,显然这个不是我们想要的数据结构. 数据库中的每一个表,在 Java 代码中,一定会有一个类与之对应,例如: package com.gerrar ...
- JDBC 学习笔记(六)—— PreparedStatement
1. 引入 PreparedStatement PreparedStatement 通过 Connection.createPreparedStatement(String sql) 方法创建,主要用 ...
- JDBC学习笔记二
JDBC学习笔记二 4.execute()方法执行SQL语句 execute几乎可以执行任何SQL语句,当execute执行过SQL语句之后会返回一个布尔类型的值,代表是否返回了ResultSet对象 ...
- JDBC学习笔记一
JDBC学习笔记一 JDBC全称 Java Database Connectivity,即数据库连接,它是一种可以执行SQL语句的Java API. ODBC全称 Open Database Conn ...
随机推荐
- WPF的Application类
本节主要介绍一下Application类的部分功能,我们首先来看一下如何使用Application类来加载一个窗口: 我们首先创建一个控制台程序,并引入相关的dll,然后修改Main()方法. [ST ...
- cadence16.6 如何对齐元件
1.选中Setup-->Application Mode-->Placement Edit mode2.按"CTRL"键,选中需要对齐的所有对象.3.点击右键右,或者在 ...
- MYSQL 配置slave故障
之前为主从配置,后来分割成2个单实例.现在环境需要,重新配置为主从,之前参数都已配置好,直接启动,如下: mysql> change master to master_host='192.168 ...
- Java中main函数参数String args[] 和 String[] args 区别
其实没什么区别的:当初我也是这样的疑问,呵呵:非要说区别就看下面:执行效果上没有不同, 但在语法意义上略有不同. 比如, String与String[], 前者叫字符串类型而后者叫字符串数组类型. S ...
- DBus接口文档
gitgit.projects.genivi.org / ipc / common-api-dbus-tools.git / blob? search: re 0544e985b6e4a6c83ddf ...
- android实现可拖动按钮
功能:在Android中实现可拖动按钮,同时实现按钮的点击功能 相关问题: 按钮拖动的界限限定. 按钮单击和拖动之间的冲突. 在界面未显示之前,获得View的高/宽. 问题描述: 如果不为按钮的拖动范 ...
- php开发过程中用什么方法来加快页面的加载速度
1,数据库优化;2,php缓存;3,使用zend引擎(其它框架);4,分布式部署;5,静态
- 【转载】使用Axure制作App原型怎样设置尺寸?
使用Axure制作App原型怎样设置尺寸? 原文地址:http://www.axure.us/2172/ 本文由原型库网站投稿,转载请注明出处. 最近有几位小伙伴儿都提出同样一个疑问:想用Axure设 ...
- internet协议
internet协议入门 前言 劳于读书,逸于作文. 原文地址:internet协议入门 博主博客地址:Damonare的个人博客 博主之前写过一篇博客:网络协议分析,在这篇博客里通过抓包,具体的分析 ...
- cocos2dx中的动作
CCAction是cocos2dx中专门用来处理动作相关的类,几乎所有的与动作相关的类都是从它派生而来的.而CCAction继承自CCObject class CCFiniteTimeAction : ...