Connection的setAutoCommit方法用于设置是否开启事务自动提交
若设置为true,则每次执行sql语句后,默认提交一次事务
若设置为false,则需手动commit事务,或遇到问题事务自动回滚
package com.company;
import java.io.FileInputStream;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
/**
* @Author: David.Xiao
* @Date: 2018/10/30 19:24
* @Description:
*/
public class TransactionTest {
private static String driver;
private static String url;
private static String user;
private static String password;
private static Connection conn;
public void initParams()
{
String propPath = "resources/mysql.properties";
Properties prop = new Properties();
try {
prop.load(new FileInputStream(propPath));
} catch (IOException e) {
e.printStackTrace();
}
driver = prop.getProperty("driver");
url = prop.getProperty("url");
user = prop.getProperty("user");
password = prop.getProperty("password");
try {
Class.forName(driver);
conn = DriverManager.getConnection(url,user,password);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
public void insertTransc()
{
String[] jdbc_names = {"sunlingzhi","wangming","luyuchen"};
String[] jdbc_descs = {"1111","2222"};
try {
//若设置为true,则前两次成功插入数据到数据库;若设置为false,则一条也插入不进去
conn.setAutoCommit(true);
String sql = "insert into jdbc_test values (null ,?,?);";
PreparedStatement preparedStatement = conn.prepareStatement(sql);
for (int i=0;i<jdbc_names.length;i++) {
preparedStatement.setString(1,jdbc_names[i]);
preparedStatement.setString(2,jdbc_descs[i]);
preparedStatement.executeUpdate();
}
conn.commit();
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
TransactionTest transactionTest = new TransactionTest();
transactionTest.initParams();
transactionTest.insertTransc();
}
}