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()方法来确定当前事务的隔离级别。

posted @ 2020-04-20 08:53  Hero丶小卡  阅读(348)  评论(0编辑  收藏  举报