JDBC之数据类型和事务

JDBC数据类型

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

总结如下的表格:

SQL JDBC/Java setter updater getter
VARCHAR java.lang.String setString updateString getString
CHAR java.lang.String setString updateString getString
LONGVARCHAR java.lang.String setString updateString getString
BIT boolean setBoolean updateBoolean getBoolean
NUMERIC java.math.BigDecimal setBigDecimal updateBigDecimal getBigDecimal
TINYINT byte setByte updateByte getByte
SMALLINT short setShort updateShort getShort
INTEGER int setInt updateInt getInt
BIGINT long setLong updateLong getLong
REAL float setFloat updateFloat getFloat
FLOAT float setFloat updateFloat getFloat
DOUBLE double setDouble updateDouble getDouble
VARBINARY byte[] setBytes updateBytes getBytes
BINARY byte[] setBytes updateBytes getBytes
DATE java.sql.Date setDate updateDate getDate
TIME java.sql.Time setTime updateTime getTime
TIMESTAMP java.sql.Timestamp setTimestamp updateTimestamp getTimestamp
CLOB java.sql.Clob setClob updateClob getClob
BLOB java.sql.Blob setBlob updateBlob getBlob
ARRAY java.sql.Array setARRAY updateARRAY getARRAY
REF java.sql.Ref setRef updateRef getRef
STRUCT java.sql.Struct setStruct updateStruct getStruct
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("数据处理完成!");
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值