JAVA访问数据库工具
1.JDBC 访问数据库
2.事务 5大隔离级别
1.JDBC(java database connectivity)
步骤:
1加载JDBC驱动器
2注册DriverManager
3建立数据库连接,取得connection对象
4建立statement对象或 preparedStatement对象
5执行SQL
6访问结果集ResultSet对象
7依次关闭 ResulSet,Statement,PreparedStatement,connection对象。
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class JdbcTest { public static void main(String[] args) throws Exception { String user = "root"; String password = "000000"; String url = "jdbc:mysql://localhost:3306/test"; String driver = "com.mysql.jdbc.Driver"; Connection con = null; Statement statm = null; ResultSet rs = null; try { Class.forName(driver); con = DriverManager.getConnection(url, user, password); statm = con.createStatement(); rs = statm.executeQuery("select * from Employee"); while (rs.next()) { System.out.println(rs.getInt(1) + " " + rs.getString(2) + " " + rs.getInt(3)); } } catch (ClassNotFoundException e) { e.printStackTrace(); } finally { try { if (rs != null) rs.close(); if (statm != null) statm.close(); if (con != null) con.close(); } catch (Exception e2) { System.out.println(e2.getMessage()); } } } }
pom 文件
<dependencies> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.25</version> </dependency> </dependencies>
2.事务 5大隔离级别
1)TRANSACTION_NONE JDB. 不支持事务
2)TRANSACTION_READ_UNCOMMITTED. 读未提交。允许 脏读,不可重复读,虚读。
3)TRANSACTION_READ_COMMITTED.读提交。允许 不可重复读,虚读。
4)TRANSACTION_REPEATABLE_READ.可重复读。允许 虚读。
5)TRANSACTION_SERIALIZABLE.序列化 最高隔离级别 防止脏读 ,不可重复读,虚读。
三大读问题(脏读,不可重复读,虚读)
脏读:一个事务读取到另一个事务尚未提交的数据
例如 当事务A与事务B并发执行时,当事务A更新后,事务B查询读取到的A尚未提交的数据。此时事务A回滚,则事务B读到的数据是无效的。
不可重复读:一个事务的操作导致另外一个事务前后两次读到不同的数据。
例如 当事务A与事务B并发执行时,当事务B查询读取数据后,事务A更新操作改变事务B查询到的数据,此时事务B再次读该数据,发现前后两次的数据不一样。
虚读:一个事务的操作导致另外一个事务前后两次查询的结果数据量不同
例如 当事务A与事务B并发执行时,当事务B查询读取数据后,事务A新增或删除了一条满足事务A的查询条件的记录,此时,事务B再次查询,发现查询到的前次不存在的记录,或者前次的某个记录不见了。
**可以通过 Connection对象的conn.setTransactionLevel()方法来设置隔离级别,通过conn.getTransactionIsolation()方法来确定当前事务的隔离级别。