JDBC小结

存储过程

java 通过JDBC调用存储过程,首先要通过一个打开的数据库连接创建一个CallableStatement类型的对象,
该对象的prepareCall()方法包含的是存储过程的调用,然后调用该对象的executeQuery()方法执行所调用的存储过程.
ex:
create procedure Show_All
as
select t1.sname ,t2.tname from tableName1 as t1,tableName2 as t2 where t1.id=t2.id

在java程序中
Connection conn=null;

String url="jdbc:sqlserver://localhost:1433;DatabaseName=数据库名";
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); //两千的驱动
conn=DriverManager.getConnection(url, "sa","sasa");
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {

e.printStackTrace();
}

CallableStatement cs=conn.prepareCall("{Show_All}");
ResultSet rs=cs.executeQuery();
prepareCall()方法的参数是{Show_All},不同的DMBS调用存储过程的语法可能不同,但是JDBC中隐藏了具体的DBMS对存储过程的调用
语法,在运行时由JDBC驱动负责将各种格式转换为具体的相应格式。如果存储过程包含多个SQL语句(包含检索与更新的语句),则会产
生多个结果集这是要用execute()方法来执行所调用的存储过程.


事务

JDBC中对事务的操作主要靠Connection接口的三个方法 setAutoCommit(),commit(),roolback()。
一个数据库的连接一旦创建后就采用一种自动提交的模式(把每个SQL都看做一个事务),在执行后其执行结果对数据库的影响将是永久的。要把多个sql
语句看做是一个事务就必须关闭这种自动提交模式,调用该连接的setAutoCommit(false)可以实现。
关闭自动提交模式后,sql语句的执行结果将不会被提交,这是需要调用该连接的commit()方法。从上一次调用commit()到本次commit()方法
调用之间的sql被看做是一个事务。
当一个事务在执行的过程中出现异常而失败时,为了保证数据的一致性该事务必须回滚,调用该连接的roolback()方法将取消这次事务,并恢复数据。

批量更新:
一次向DBMS发送多条SQL语句在某些情况下批量更新比单独发送sql语句运行效率更高。
conn.setAutoCommit(false);
Statement stm=conn.createStatement();
stm.addBatch("sql语句");
stm.addBatch("sql语句");
stm.addBatch("sql语句");
.
.
.
.
int[] result=stm.executeBatch(); //执行所有的SQL语句执行批量

你可能感兴趣的:(jdbc)