第二季--数据库源数据

    技术2022-05-19  21

    五、数据库源数据

    DatabaseMetaDatagetURL(),获得连接数据库的URLgetDatabaseProductName() 获得数据库产品的名称getDriverVersion() 获得JDBC驱动程序的String形式的版本号getTables()获得数据库中该用户的所有表getUserName() 获得数据库用户名。

    六、事务(Transaction)

    事务是针对原子操作的,要求原子操作不可再分,要求原子操作必须同时成功同时失败。事务是捆绑的原子操作的边界。JDBC中使用事务,先要使用连接调用setAutoCommite(false)方法,把自动提交(commit)置为false。打开事务就要关闭自动提交。不用事务是要把setAutoCommite(true)

    在处理事务时,在发送sql语句后执行成功并确认时,就在try块中使用连接调用commit()方法来发送提交信息,在发送sql语句后执行失败时,会在catch语句块中使用连接调用rollback()方法来发送回滚信息,也可以在需要时做回滚操作(主观原因)。

    七、JDBC事务并发产生的问题和事务隔离级别

    1,脏读(dirty read),读取到了没有提交的数据。2,不可重复读(UnPrpeatable Read),两次读取到了不同的数据,就是要保持在同一时间点上两次读取到的数据相同,   不能够使查询数据时进行改变。3,幻读(phantom),在两次查询同一时间点数据时,数据数量发生改变,要保持在同一时间点上两次读取到的数据相同。

    事务隔离级别

    TRANSACTION_NONE不使用事务。TRANSACTION_READ_UNCOMMITTED 可以读取为提交数据。TRANSACTION_READ_COMMITTED可以避免脏读,不能够读取没提交的数据,最常用的隔离级别  大部分数据库的默认隔离级别TRANSACTION_REPEATABLE_READ可以避免脏读,重复读取,TRANSACTION_SERIALIZABLE可以避免脏读,重复读取和幻读,(事务串行化)会降低数据库效率

    以上的五个事务隔离级别都是在Connection类中定义的静态常量,使用setTransactionIsolation(int level) 方法可以设置事务隔离级别。

    八,异常的处理try{}catch(SQLException){}try{}catch(Exception){}

    作业:自己写一个Sqlplus应用java jdbc教程2-java教程


    最新回复(0)