如何从 JDBC 中的存储过程获取输出

XXI*_*XIV 2 java mysql stored-procedures jdbc

我正在尝试使用 JDBC 并且制作了一个存储过程。我想调用存储过程,然后使用Java中的输出数据System.out.println。我怎么做?

下面是我原来的存储过程。我想让这个工作,但从阅读中我不知道这是否可能

DELIMITER $$
            CREATE
            PROCEDURE CountMembers()
            BEGIN
            SELECT COUNT(MEMBER_ID) FROM Members;
            END $$
    DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

这是我将其更改为的内容,因为它似乎得到了输出,这可能是必须要做的。

DELIMITER $$
        CREATE
        PROCEDURE CountMembers(OUT m_count VARCHAR(30))
        BEGIN
        SELECT COUNT(MEMBER_ID) INTO m_count FROM Members;
        END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

我知道要运行它,我必须创建一个可调用的语句,然后我知道在哪里String userCount = callableStatement.getString(1);可以获得输出。基本上我已经阅读了很多信息,但我很难将它们整合在一起。

Ser*_*Ten 5

首先,请注意 COUNT(MEMBER_ID) 将返回一个整数值,但您将其选择到 VARCHAR 变量中。

接下来,我认为您正在寻找类似的东西:

    CallableStatement stm = connection.prepareCall("{ call CountMembers(?) }");
    stm.registerOutParameter(1, Types.VARCHAR);
    stm.execute();
    String m_count = stm.getString(1);
    stm.close();
Run Code Online (Sandbox Code Playgroud)