1、批量执行
package com.oracle;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class pichuliConnection {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/ORCL","scott","123456");
PreparedStatement ps=null;
try {
String sql="update emp set sal=sal+100 where empno=?";
ps=conn.prepareStatement(sql);
ps.setInt(1,7499); //参照的是emp表
ps.addBatch();
ps.setInt(1,7369);
ps.addBatch();
int[] ret=ps.executeBatch(); //executeBatch()返回的值是一个int类型
System.out.println("修改成功");
} catch (Exception e) {
System.out.println("出错..."+e.getMessage());
}
finally {
if(ps!=null)
ps.close();
if(conn!=null)
conn.close();
}
}
}
2、使用事物转账
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class accountConnection {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
Class.forName("oracle.jdbc.driver.OracleDriver");
//获取连接
Connection conn=DriverManager.getConnection("jdbc:oracle:thin:@//localhost:1521/ORCL","scott","123456");
conn.setAutoCommit(false); //因为在默认状态下,执行成功的语句会默认的提交,所以事先设置为不自动提交。
PreparedStatement ps=null;
try {
String sql1="update account set balance=balance+1000 where id=?";
String sql2="update account set balance=balance-1000 where id=?";
ps=conn.prepareStatement(sql1);
ps.setString(1, "111111");
int ret1=ps.executeUpdate();
ps=conn.prepareStatement(sql2);
ps.setString(1, "222222");
int ret2=ps.executeUpdate();
conn.commit(); // 如果两个语句都执行成功,就让语句提交,
System.out.println("chenggong");
} catch (Exception e) {
conn.rollback(); //否则就让他回滚到执行2条语条前的状态
System.out.println("shibai"+e.getMessage());
}finally {
if(ps!=null) {
ps.close();
}
if(conn!=null) {
conn.close();
}
}
}
}
事物处理在ORACLE数据库中
3、sql注入登录