1. 数据库事务
一组要么同时执行成功,要么同时执行失败的SQL语句。是数据库操作的一个执行单元
事务的四大特点
Consistency(一致性),Isolation(隔离性),Durability(持久性),
Oracle数据库
Read Committed(读取提交内容),Serializable 可串行化
DBUtils工具类
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class DBUtils {
private static String driver = null;
private static String url = null;
private static String username = null;
private static String password = null;
static {
Properties properties = new Properties();
FileInputStream fis;
try {
fis = new FileInputStream("src\\database.properties");// 相对路径是相对于工程的
properties.load(fis);
// load方法的作用:将文件中的信息通过流读取到properties中
driver = properties.getProperty("driver");
url = properties.getProperty("url");
username = properties.getProperty("username");
password = properties.getProperty("password");
// 注册驱动了
Class.forName(driver);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection() {
try {
return DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "SCOTT", "tiger");
} catch (SQLException e) {
e.printStackTrace();
}
return null;
}
public static void excuteUpdate(String sql, Object[] obj) {
Connection conn = null;
PreparedStatement pstmt = null;
try {
// 1.注册驱动
// 2.建立连接
conn = getConnection();
// 3.statement
pstmt = conn.prepareStatement(sql);
// 4.赋值参数
for (int i = 0; i < obj.length; i++) {
pstmt.setObject(i + 1, obj[i]);
}
// 5.执行sql
int num = pstmt.executeUpdate();
// 6.处理结果
if (num > 0) {
System.out.println("操作成功");
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 7.关闭
closeAll(null, pstmt, conn);
}
}
public static void closeAll(ResultSet set, Statement stmt, Connection conn) {
if (set != null) {
try {
set.close();