java - 如何使用存储过程进行选择

标签 java stored-procedures jdbc derby

当通过 Callable 语句使用此存储过程时,如何使用存储过程检索 (SELECT) 所有数据?我创建了一个示例项目,我需要从表中选择所有数据。首先,我使用了准备好的语句,这样我就可以将数据插入到以下文本字段中。顺便说一句,我正在使用 Derby 。

表格

CREATE TABLE SAMPLEONLY
(
FULLNAME VARCHAR(50),
ADDRESS VARCHAR(50)
)

图形用户界面

SAMPLE

插入代码

    private void addButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
    String addFullname = fullnameTf.getText();
    String addAddress = addressTf.getText();


    String insert = "INSERT INTO SAMPLEONLY (FULLNAME,ADDRESS) VALUES (?,?)";
    try (Connection myConn = DriverManager.getConnection(url, user, pass);
        PreparedStatement myPs = myConn.prepareStatement(insert);){

        myPs.setString(1, addFullname);
        myPs.setString(2, addAddress);

        myPs.executeUpdate();


    } catch (SQLException e) {
        e.printStackTrace();
    }
}

插入到以下文本字段后。我需要使用存储过程检索所有数据。我根据我在 Derby 引用手册上读到的内容创建了一个存储过程。如何在我的存储过程中插入 SELECT * FROM SAMPLEONLY?

存储过程

CREATE PROCEDURE show_data(IN FULLNAME VARCHAR(50), IN ADDRESS VARCHAR(50))
PARAMETER STYLE JAVA
LANGUAGE JAVA
READS SQL DATA
EXTERNAL NAME 'Frame.searchButton'
//HOW CAN I INSERT HERE?

如何在此处插入 SELECT * FROM SAMPLEONLY ?我对创建这个存储过程有点困惑,因为这是我第一次使用它。我将我的类命名为 Frame

选择代码

private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
    String seeachStoredProc = "{call show_data(?,?)}";

    try (Connection myConn = DriverManager.getConnection(url, user, pass);
         CallableStatement myCs = myConn.prepareCall(seeachStoredProc);)
        {

                //what goes here?

        } 
    catch (SQLException e) 
    {
        e.printStackTrace();
    }
}

任何帮助将不胜感激!如果我的代码有问题,请指导我。欢迎评论。

最佳答案

请使用下面的代码

存储过程

CREATE PROCEDURE show_data(IN FULLNAME VARCHAR(50), IN ADDRESS VARCHAR(50))
PARAMETER STYLE JAVA
LANGUAGE JAVA
READS SQL DATA
EXTERNAL NAME 'Frame.searchButton'
BEGIN

INSERT INTO SAMPLEONLY("FULLNAME", "ADDRESS") 
  VALUES (FULLNAME , ADDRESS);  

  COMMIT;

END;

选择代码

private void searchButtonActionPerformed(java.awt.event.ActionEvent evt) {                                             
String seeachStoredProc = "{call show_data(?,?)}";

try (Connection myConn = DriverManager.getConnection(url, user, pass);
     CallableStatement myCs = myConn.prepareCall(seeachStoredProc);)
    {

        String addFullname = fullnameTf.getText();
            String addAddress = addressTf.getText();
        myCs .setInt(1, addFullname 
        myCs .setString(2, addAddress );            

        // execute store procedure
        myCs .executeUpdate();   

    } 
catch (SQLException e) 
{
    e.printStackTrace();
}
}

关于java - 如何使用存储过程进行选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36051836/

相关文章:

mysql - mysql 中存储过程的并行性?

java - 使用预准备语句的变量列名

java - 拆分字符串并将其放在 int 数组中

在编译器或类型检查器 (javac) 中导致堆栈溢出的 Java 片段?

java - 添加 'com.amazonaws:aws-java-sdk:1.10.1'时Gradle编译错误

满足条件时MySQL加载数据Infile

sql - 如何为 SQL 文件创建项目模板,用于 Visual Studio 数据库项目

java - 使用 DAO Spring MVC 将行插入多个表

java - Cassandra 数据库连接问题

Java:找出函数是用可变参数还是数组调用的