java jdbc调用函数mysql如何进行?

TheDisguiser 2020-07-13 09:29:21 java常见问答 8840

我们都知道,在java中经常需要用到别的项目集成,那小伙伴们对jdbc调用MySQL函数知道多少呢?这次小编就带你们来看看吧。

一、

我们可以通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例。

{
    ? = call < procedure - name > [(<arg1>, <arg2>, ...)]}
call <procedure-name> [(<arg1>, <arg2>, ...)]}

PS:在使用Connection对象的preparedCall()方法时,注意需要传入一个String类型的字符串,该字符串用于指明如何调用存储过程。

二、

使用CallableStatement对象的registerOutParameter()方法注册OUT参数

三、

使用CallableStatement对象的setXxx()方法设定IN或IN OUT参数

若想将参数默认值设为null,可以使用setNull()方法

可以用数据字典查看存储过程或函数的定义:

select text from user_source where lower(name) = 'add_sal_procedure;'

示例:

create
function sum_salary(name varchar(20), i int) returns varchar(20)
begin
declare result int
default 0;
declare r varchar(20) default 'aaa';
select count( * ) into result from t_user where username = name and i = id;
select
if (result > 0, '成功!', '失败!') into r;
return r;
end;

如上函数在idea中显示的是

create
definer = root @localhost
function sum_salary(name varchar(20), i int) returns varchar(20)
begin
declare result int
default 0;
declare r varchar(20) default 'aaa';
select count( * ) into result from t_user where username = name and i = id;
select
if (result > 0, '成功!', '失败!') into r;
return r;
end;

这个函数的功能是输入用户名和id,并查看是否有这个人,测试如下:

package com.litian.jdbc;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.Types;
/**
 * @author: Li Tian
 * @contact: litian_cup@163.com
 * @software: IntelliJ IDEA
 * @file: TestCalllableStatement.java
 * @time: 2020/4/8 12:14
 * @desc: |如何使用JDBC调用存储在数据库中的函数或存储过程
 */
public class TestCalllableStatement
{
    public static void main(String[] args)
    {
        Connection conn = null;
        CallableStatement cs = null;
        try
        {
            conn = JDBCTools.getDSConnection();
            // 1. 通过Connection对象的prepareCall()方法创建一个CallableStatement对象的实例。
            String sql = "{?= call sum_salary (?, ?)}";
            cs = conn.prepareCall(sql);
            // 2. 通过CallableStatement对象的registerOutParameter()方法注册OUT参数
            cs.registerOutParameter(1, Types.VARCHAR);
            // 3. 通过CallableStatement对象的setXxx()方法设定IN或IN OUT参数
            cs.setString(2, "你大爷");
            cs.setInt(3, 3);
            // 4. 执行存储过程
            cs.execute();
            // 5. 获取返回值
            String result = cs.getString(1);
            System.out.println(result);
        }
        catch (Exception e)
        {
            e.printStackTrace();
        }
        finally
        {
            JDBCTools.release(null, cs, conn);
        }
    }
}

成功输出返回值!

以上就是本篇文章的所有内容,对于jdbc小伙伴们还有什么疑问呢?还想了解更多java常见问题及解决方法,就来关注本站吧。

推荐阅读:

java jdbc实现增删改查实例,如何实现?

java jdbc和odbc的区别是什么?jdbc和odbc的关系是怎样的?

jdbc连接mysql数据库相关问题及解决方法