JDBC之数据类型和事务

来源:互联网 发布:2017流行网络红歌 编辑:程序博客网 时间:2024/06/05 04:13

JDBC数据类型

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

总结如下的表格:

SQLJDBC/JavasetterupdatergetterVARCHARjava.lang.StringsetStringupdateStringgetStringCHARjava.lang.StringsetStringupdateStringgetStringLONGVARCHARjava.lang.StringsetStringupdateStringgetStringBITbooleansetBooleanupdateBooleangetBooleanNUMERICjava.math.BigDecimalsetBigDecimalupdateBigDecimalgetBigDecimalTINYINTbytesetByteupdateBytegetByteSMALLINTshortsetShortupdateShortgetShortINTEGERintsetIntupdateIntgetIntBIGINTlongsetLongupdateLonggetLongREALfloatsetFloatupdateFloatgetFloatFLOATfloatsetFloatupdateFloatgetFloatDOUBLEdoublesetDoubleupdateDoublegetDoubleVARBINARYbyte[]setBytesupdateBytesgetBytesBINARYbyte[]setBytesupdateBytesgetBytesDATEjava.sql.DatesetDateupdateDategetDateTIMEjava.sql.TimesetTimeupdateTimegetTimeTIMESTAMPjava.sql.TimestampsetTimestampupdateTimestampgetTimestampCLOBjava.sql.ClobsetClobupdateClobgetClobBLOBjava.sql.BlobsetBlobupdateBlobgetBlobARRAYjava.sql.ArraysetARRAYupdateARRAYgetARRAYREFjava.sql.RefsetRefupdateRefgetRefSTRUCTjava.sql.StructsetStructupdateStructgetStructJDBC事务

什么是事务??

所谓的事务就是一件事在包含多条的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("数据处理完成!");}}



0 0
原创粉丝点击