zoukankan      html  css  js  c++  java
  • jdbc调用存储过程和存储函数

    1jdbc总结(模板):

    a、导入驱动包:class.forName(“驱动类”)

    b、与数据库建立连接(connection = DriverManager.getConnection(url, user, password);

    c、通过connection,获取操作数据库的对象Statetment/prepareStatement/callStatement

    stmt = connection.createStatement() ;

    d、查询(处理结果集):

    while(rs.next()) {
    				int num = rs.getInt("num");
    				String name = rs.getString("name");
    				int age = rs.getInt("age");
    				System.out.println("num---"+num+"//name---"+name+"//age----"+age);
    			}
    

     catch异常:

    try{....
                 }catch(SQLException e) {
    				e.printStackTrace();
    			}catch(ClassNotFoundException e) {
    				e.printStackTrace();
    			}catch(Exception e) {
    				e.printStackTrace();
    			}//具体问题具体分析
          finally{
             if(rs!=null)rs.close();
                    if(stmt!= null)stmt.close();    
                    if(connection!= null)connection.close();} //打开顺序与关闭顺序相反

     --jdbc中,除了Class.forName()抛出ClassNotFoundException e之外,其余都是SQLException e。

    ========================================================================================

    CallableStatement:调用存储过程、存储函数

     connection.prepareCall(存储过程、存储函数名);

    参数格式:

    过程:(无返回值,用out代替)

    {call 存储过程名(参数列表)}

    函数:(有返回值return)

    { = call 存储函数名(参数列表)}

    存储过程

    package Mydemo;
    
    import java.sql.CallableStatement;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.SQLException;
    import java.sql.Statement;
    import java.sql.Types;
    
    public class callableStatement {
        static CallableStatement cstmt = null;
        static Connection cont = null;
        public static void invoke() {
            
            String url ="jdbc:sqlserver://localhost:0;DatabaseName=test";
            String user = "sa";
            String password = "123456";
            try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            
            cont = DriverManager.getConnection(url, user, password);
            
            cstmt = cont.prepareCall("{call 存储过程(?,?,?)}");
            cstmt.setInt(1, 10);
            cstmt.setInt(2, 10);
            
            
            cstmt.registerOutParameter(3, Types.INTEGER);
            cstmt.execute();//num1+num2,execute()之前处理输入参数
            //设置输出参数的类型
            cstmt.getInt(3);
        
            int resuult = cstmt.getInt(3);//获取输出结果
            
            System.out.println("sdsda"+resuult);
            }catch(ClassNotFoundException e) {
                e.printStackTrace();
            }catch(SQLException e) {
                e.printStackTrace();
            }finally {
                try{
                    if(cstmt!=null)cstmt.close();
                    if(cont!=null)cont.close();
                }catch(SQLException e) {
                    e.printStackTrace();
                }
            }
        }
        public static void main(String[] args) {
            invoke();
        }
    }

    存储函数与存储过程类似,(使用时更改的部分)

    存储函数:

    cstmt = cont.prepareCall("{? = call 存储过程(?,?)}");
    		cstmt.setInt(2, 10);
    		cstmt.setInt(3, 10);
    		cstmt.registerOutParameter(13, Types.INTEGER);
    		int resuult = cstmt.getInt(3);//获取输出结果
    		System.out.println("sdsda"+resuult);
    

     存储过程

    cstmt = cont.prepareCall("{call 存储过程(?,?,?)}");
    		cstmt.setInt(1, 10);
    		cstmt.setInt(2, 10);
    	
    		cstmt.registerOutParameter(3, Types.INTEGER);
    		cstmt.execute();//num1+num2,execute()之前处理输入参数
    		//设置输出参数的类型
    		cstmt.getInt(3);
    	
    		int resuult = cstmt.getInt(3);//获取输出结果
    
  • 相关阅读:
    ajax请求成功后打开新窗口地址
    向table添加水平滚动条
    使用jQuery实现类似开关按钮的效果
    利用jQuery实现CheckBox全选/全不选/反选
    jQuery插件开发
    九度oj 题目1214:丑数
    素数的筛选法
    九度oj 题目1367:二叉搜索树的后序遍历序列
    九度oj 题目1499:项目安排
    九度oj 题目1160:放苹果
  • 原文地址:https://www.cnblogs.com/mi-9/p/12769395.html
Copyright © 2011-2022 走看看