当通过 Callable 语句使用此存储过程时,如何使用存储过程检索 (SELECT) 所有数据?我创建了一个示例项目,我需要从表中选择所有数据。首先,我使用了准备好的语句,这样我就可以将数据插入到以下文本字段中。顺便说一句,我正在使用 Derby 。
表格
CREATE TABLE SAMPLEONLY
(
FULLNAME VARCHAR(50),
ADDRESS VARCHAR(50)
)
图形用户界面
插入代码
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/