JDBC调用存储过程,以及存储过程 事务的使用.....

在JDBC中调用存储过程 首先就要在数据库中存在 要调用的过程  ,存储过程是一组SQL语句的集合,我们吧实现某一功能的 SQL语句集合在一起来使用,方便了用户,不光是这样,存储过程可以预编译,也就是说只要调用了一次存储过程,那么下次在调用存储过程的时候 就不需要进行再次编译了  。提高了 数据库访问的效率 。。

在 SQL  SERVER20008  中创建存储过程    语法如下 

      Create   Procedure   过程名字(@parameter1  int ,@parameter2  char(10) .........)    as       <SQL命令> 

     例子: 

    Create  Procedure  a  as  select  *  from  info   //  创建了存储过程 a  表示查询 info表的所有数据     

   

  在 JDBC中调用   方法   。。。

       Connection  c =DriverManager.getConnection("jdbc:odbc:datasoure") ;  //连接数据库 

       CallableStatement  m=c.prepareCalle("call p(?,?)") ;  //创建CallableStatement对象  并传递存储过程调用 的SQL执行语句    ?表示 JDBC存储过程参数的通用格式

      m.setString(1,"one"); 

     m.setString(2."two");  //分别设置第一个参数?和第二个参数?的值 

     然后调用  m.executeUpdate() ;//执行存储过程  

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

   在JDBC操作中 我们还记得  Connection的 commit方法 吗?   这个方法 是提交SQL命令 ,默认状态下是自动提交  .也就是说 不用我们 显示的去调用这个方法来提交SQL命 令  。 

   在一般的  SQL  查询 更新删除 等操作的时候 我们不用去设置它的状态,自动提交就行 。但是在事务中,我们不得不用到 commit方法手动提交 ,关于什么事务 下面我详细说   明  .... 

       事务?其实就是几个SQL语句的组合 ,但是这个组合有特性 ,就是他们有原子性?什么是原子性呢 ,就是 事务中的 SQL操作要么都执行 ,要么 一个也不执行 ,这就是事务的概念 ,  什么时候用到事务呢 ,比如说 我们 在处理银行转账服务的同时 是一个账号 扣钱  一个账户加钱, 这两个操作只能同时进行 ,但却不能一个执行而另一个不执行,事务的用处在银行转账得到了很好的体现。。。。。。

 

事务的处理 我们就不能用自动提交模式了 ,

                1、我们需要调用  Connection类的  setAutoCommit(false)方法设置模式为手动提交,设置了这个模式之后我们调用 executeUpdate等方法执行的SQL命令都不会提交

               除非我们显示调用了Connection类的 commit()方法 。

                2、如果在事务处理当中 某一条件不符合的时候 我们就可以调用  Connection类的 rollBack()函数回滚事务  ,取消之前所作的一切事务操作 ,

 

 

 

 

posted @ 2011-12-02 23:08  programmer小卫  阅读(286)  评论(0编辑  收藏  举报