os dados do lote e controle de transações

os dados do lote

Pode operar uma pluralidade de dados.

public class TestAddBath {
    public static void main(String[] args) throws SQLException {
        TestOne.getConnection();
    }
}

class TestOne {
    static Connection con = null;
    static PreparedStatement ps = null;

    {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
        con.setAutoCommit(false);
        ps = con.prepareStatement("insert into tanx(name) values(?)");
            for (int i = 0; i < 10; ++i) {
                ps.setObject(1, "111");
                //数据批处理
                ps.addBatch();
            }
        //数据批处理
        ps.executeBatch();
        return con;
    }
}

resultados:

Aqui Insert Picture Descrição

Controle de transação

Na ausência de reversão de transação quando a operação de dados múltiplos, um erro, o outro ainda a correr, ea transação será revertida em uma série de dados quando há um erro, ele não funcionará até que volta, ou para com sucesso, ou a falhar juntos.

Há quatro características da operação, sigla transações ACID descrito:

1, atómica (Atomic), realizar uma transação por um ou mais empacotados juntos para forma, ela parece ser uma única unidade de trabalho. Operações dentro das garantias de transações atômicas tenham ocorrido ou não ocorreu. Se todas as operações forem bem sucedidos, a transação é bem sucedida. Junte-se a qualquer operação falhar, então a transação será revertida.

2, a consistência (consistente), uma vez que uma transação é longo, independentemente do sucesso ou fracasso, em que o estado do sistema e de suas regras de negócio são os mesmos. Ou seja, os dados não devem ser destruídos.

3, o isolamento (isolamento), a transação deve permitir que vários usuários operar nos mesmos dados, operação de um usuário da operação não confunde outros usuários. Assim, a transação deve ser isolado para prevenir a ocorrência da mesma situação um paralelo ler e gravar dados. Note-se que o isolamento, muitas vezes significa que você deseja bloquear a tabela de banco de dados ou linha.

4, a persistência (Durable), uma vez que a transação for concluída, os resultados da transação deve ser persistente. Portanto, não importa que tipo de falhas no sistema, todos eles sobreviveram.

exemplo:

public class TestAddBath {
    public static void main(String[] args) throws SQLException {
        TestOne.getConnection();
    }
}

class TestOne {
    static Connection con = null;
    static PreparedStatement ps = null;

    {
        try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public static Connection getConnection() throws SQLException {
        con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "root");
      //JDBC默认采用的是自动事务,它的特性就是一个出错,其他的正常运行,不能事务回滚,必须关闭
        con.setAutoCommit(false);
        ps = con.prepareStatement("insert into tanx(name) values(?)");
        try{
            for (int i = 0; i < 10; ++i) {
                ps.setObject(1, "111");
                //数据批处理
                ps.addBatch();	
            }
        }catch (Exception e){
            //回滚操作
            con.rollback();
        }
        //数据批处理
        ps.executeBatch();
        return con;
    }
}
Publicado 61 artigos originais · ganhou elogios 0 · Vistas 2169

Acho que você gosta

Origin blog.csdn.net/sabstarb/article/details/104796818
Recomendado
Clasificación