在oracle中,preparedStatement.execute()常常有卡死现象;
一个被忽略的原因就是此数据库多处被连接,并且被操作着。
因此你必须将目前这个方法放在外面或者前面执行。
因为这样,在当前数据改变之后,其他连接再执行,就不会有什么commit的问题存在了。
eg:
import java.sql.*;
public class Delete_date {
public static void delete(Long id) throws Exception{
String url = "jdbc·······";
String user = "******";
String password = "*****";
Connection conn = null;
PreparedStatement preparedStatement = null;
//注册驱动(数据库的类型)
Class.forName("oracle.jdbc.driver.OracleDriver");
//获取连接
conn = DriverManager.getConnection(url, user, password);
//执行SQL
String sql = "delete from std where ID="+id;
//打印sql
System.out.println("sql=" + sql);
preparedStatement = conn.prepareStatement(sql);
boolean result = preparedStatement.execute();
//处理结果 preparedstatement execute()操作成功!但是返回false
if (result) {
System.out.println("操作失败");
} else {
System.out.println("操作成功");
}
//释放资源
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
preparedStatement = null; //gc处理
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
} finally {
conn = null; //gc处理
}
}
}
}
下面的,就是我之前所说的,把它放在其他连接之前或者之外,因为上面有close()等方法(这样做,其实类似给予了优先级。)
try {
Delete_date.delete(id);
} catch (Exception e) {
e.printStackTrace();
}
使用preparedStatement.execute()预处理,提高数据库操作性能