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 ...
随机推荐
- JS对Json对象Distinct
Json对象去重 今日有一个需求如下: 从数据库中取出数据源转化成json字符串绑定到隐藏域中,取出的json字符串如下: string data="[{"CompanyName& ...
- Linux nmon 监控工具使用
Linux 系统下监控指标及指标查看 一.工具介绍 Linux 系统下资源监控使用nmon 工具.它可以帮助在一个屏幕上显示所有重要的性能优化信息,并动态地对其进行更新且并不会消耗大量的CPU ...
- php微型mvc框架创建步骤
创建数据库和表结构,并且添加模拟数据: 新建models.views.controllers.utilities和include五个文件夹:models:模型层 model.php:模型基类 ...
- C++中的struct和class的区别
C++中的struct对C中的struct进行了扩充,它已经不再只是一个包含不同数据类型的数据结构了,它已经获取了太多的功能.struct能包含成员函数吗? 能!struct能继承吗? 能!!stru ...
- iOS多线程编程Part 2/3 - NSOperation
多线程编程Part 1介绍了NSThread以及NSRunLoop,这篇Blog介绍另一种并发编程技术:NSOPeration. NSOperation & NSOperationQueue ...
- ThinkPHP/Common/extend.php
<?php // +---------------------------------------------------------------------- // | ThinkPHP [ ...
- .NET基础之:i++和i=i+1和++i的区别
i++ 一定等同于 i=i+1吗? 大家都知道,i++通常情况都是等同于i=i+1,在编译时,clr会自动向上转换 比如说 int t =1; t++; 等同于 t=t+1; //1 是 ...
- iOS的影片播放 MediaPlayer 和 AVPlayer(转)
分类: Iphone2013-01-28 16:19 5230人阅读 评论(0) 收藏 举报 在iOS開發上,如果遇到需要播放影片,如開機動畫…,我們很習慣地會使用MediaPlayer來播放影片,因 ...
- c#之委托总结
1.委托的声明和编译原理 声明委托: delegate void Translate(string str); 通过反编译之后可得下面代码 private sealed class Translate ...
- Week1 Team Homework #2: Introduction of each team member
王洛书 我是来自浙江的王洛书.热爱历史,热爱美食,热爱代码,热爱博物馆.很喜欢软件工程这门课的上课方式,也很喜欢组里的这些同学.希望能大家一起努力,在这门课上真正地收获能力上的提升! 陈睿翊