首页 > 代码库 > 用JAVA调用Mysql数据库,数据存储过程的封装与调用;

用JAVA调用Mysql数据库,数据存储过程的封装与调用;

1.存储过程的封装:右键函数--新增函数--选择进程(进程是没有返回值的)或者选择函数(函数是有返回值的)

2.在这里我们选择进程--进入后点击下一步

技术分享

模式中有IN(往里输入参数),OUT(往外输出参数),INOUT,在这里我们通常使用的就是IN和OUT,如果什么也不写系统默认为IN。

建立好函数之后我们既要把要执行的命令封装到函数里,例如:

技术分享

注意:在写完一条语句后要加分号,参数varchar类型后要加上长度。

实例:

 

package com.inba.maya.cunchu;

import java.util.*;
import java.sql.*;

public class MyCunChu {

    public static void main(String[] args) throws Exception{
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb?characterEncoDing=GBK","root","");
        
        //注意:在调用数据库函数时关键词是  call 函数名后一定要加(),无论该函数是不是带有参数的,带参数的话一定要写参数;
        
        //调用没有参数的
        //CallableStatement cs=conn.prepareCall("call TCC()");
        //ResultSet rs=cs.executeQuery();
        
        
        //调用有参数的
        //CallableStatement cs=conn.prepareCall("call TTA(?, ?)");
        //输入两个参数
        //cs.setString(1, "k006");
        //cs.setInt(2, 90);
        //ResultSet rs=cs.executeQuery();
        
        
        //输出参数
        CallableStatement cs=conn.prepareCall("call TDD(?, ?)");
        //在这里由于我在数据库中写参数时,定义的第一个参数是IN,第二个参数是OUT,所以第一个还是要setString
        cs.setString(1, "k001");
        //因为第二个是OUT,所以要用registerOutParameter(位置,java.sql.Types.数据类型)
        cs.registerOutParameter(2, java.sql.Types.INTEGER);
        ResultSet rs=cs.executeQuery();
        
        //获得参数时一定要在上面执行查询完成之后
        int n=cs.getInt(2);
        
        while(rs.next()){
            System.out.println(n);
            System.out.println(rs.getString(1)+rs.getString(2)+rs.getInt(5)+rs.getDouble(3));
        }
        conn.close();
    }
}

 

用JAVA调用Mysql数据库,数据存储过程的封装与调用;