您的位置:首页 > 其它

JDBC之数据类型和事务

2015-11-05 15:51 323 查看
JDBC数据类型

我们知道java中的数据类型和SQL语言中的数据类型是有一定差别的;所以我们在使用java和数据库交互的时候需要利用JDBC驱动将java数据类型转换成相应的数据库数型;

总结如下的表格:

SQLJDBC/Javasetterupdatergetter
VARCHARjava.lang.StringsetStringupdateStringgetString
CHARjava.lang.StringsetStringupdateStringgetString
LONGVARCHARjava.lang.StringsetStringupdateStringgetString
BITbooleansetBooleanupdateBooleangetBoolean
NUMERICjava.math.BigDecimalsetBigDecimalupdateBigDecimalgetBigDecimal
TINYINTbytesetByteupdateBytegetByte
SMALLINTshortsetShortupdateShortgetShort
INTEGERintsetIntupdateIntgetInt
BIGINTlongsetLongupdateLonggetLong
REALfloatsetFloatupdateFloatgetFloat
FLOATfloatsetFloatupdateFloatgetFloat
DOUBLEdoublesetDoubleupdateDoublegetDouble
VARBINARYbyte[]setBytesupdateBytesgetBytes
BINARYbyte[]setBytesupdateBytesgetBytes
DATEjava.sql.DatesetDateupdateDategetDate
TIMEjava.sql.TimesetTimeupdateTimegetTime
TIMESTAMPjava.sql.TimestampsetTimestampupdateTimestampgetTimestamp
CLOBjava.sql.ClobsetClobupdateClobgetClob
BLOBjava.sql.BlobsetBlobupdateBlobgetBlob
ARRAYjava.sql.ArraysetARRAYupdateARRAYgetARRAY
REFjava.sql.RefsetRefupdateRefgetRef
STRUCTjava.sql.StructsetStructupdateStructgetStruct
JDBC事务
什么是事务??

所谓的事务就是一件事在包含多条的DML语句的执行过程中,要么全部执行成功,要么出现异常立即回滚。

其实质上就是让多条的SQL在一个事务中执行,并且保证这些语句在同一时间共同执行,一个事务是吧单个的SQL语句或者是一组的SQL语句作为一个整体的逻辑单元,如果

中的任何的语句失败了,那么整个事务就失败了。

那么JDBC事务有哪些特征呢??

高度的概括为:ACID

原子性(Atomicity) :事物执行语句的最小单元

一致性(Consistency) :哪里少了,哪里就会多,没有平白无故的增加或减少

隔离性(Isolation) :事务没有提交,别人是看不见的

持久性(Durability) :事务提交之后对于系统的影响是永久的

package algorithm.cxg.JDBC;

import java.sql.*;

/**
* JDBC事务==>最好和hibernate的事务区别记忆,一举两得哦
* 1.开始事务:此处传递一个布尔值 false 到 setAutoCommit() 中,就可以关闭自动提交。反之我们传入一个 true 便将其重新打开。
* connection.setAutoCommit(false);
* 2.提交事务
* connection.commit();
* 3.事务回滚
* connection.rollback();
* @author admin
*
*/
public class TestJDBC1 {
//数据库驱动
public static String JDBC_DRIVE="com.mysql.jdbc.Driver";
//数据连接地址
public static String DB_URL="jdbc:mysql://localhost/hibernate";
//数据库名称
public static String DB_NAME="root";
//数据库密码
public static String DB_PASSWORD="";
public static void main(String[] args) {
Connection connection=null;
java.sql.Statement statement=null;
try {
//注册驱动程序
Class.forName("com.mysql.jdbc.Driver");
//1.打开数据库
System.out.println("数据库开始连接。。。");
connection=DriverManager.getConnection(DB_URL, DB_NAME, DB_PASSWORD);
//开始事务:此处传递一个布尔值 false 到 setAutoCommit() 中,就可以关闭自动提交。反之我们传入一个 true 便将其重新打开。
connection.setAutoCommit(false);
//2.执行SQL语句
statement=connection.createStatement();
//出入一条语句
String sql="INSERT INTO member VALUES (6,'CaoCaoCao','1311111111')";
statement.executeUpdate(sql);
System.out.println("数据插入完毕。。。");
//查询
sql="SELECT id,`name`,phone FROM member";
//3.处理结果集
ResultSet resultSet=statement.executeQuery(sql);
//**4提交事务
connection.commit();

while (resultSet.next()) {
//检索
int id=resultSet.getInt("id");
String name=resultSet.getString("name");
String phone=resultSet.getString("phone");
//显示
System.out.println("id:"+id+",name:"+name+",phone:"+phone);
}
resultSet.close();
statement.close();
connection.close();

} catch (SQLException se) {
se.printStackTrace();
try {
if (connection!=null) {
connection.rollback();//事务回滚
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//一般情况下用来关闭资源
try {
statement.close();
} catch (SQLException e) {
e.printStackTrace();
}
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
System.out.println("数据处理完成!");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: