Java 如何从存储过程返回结果集?
我创建了一个存储过程,可以从中获取插入到以下文本字段中的所有数据。如何通过调用Callable语句来获取所有这些数据?我认为这是比基于我阅读的批处理语句更简单的方法。我只拖放以下组件只是一个练习的目的 存储过程Java 如何从存储过程返回结果集?,java,stored-procedures,jdbc,derby,Java,Stored Procedures,Jdbc,Derby,我创建了一个存储过程,可以从中获取插入到以下文本字段中的所有数据。如何通过调用Callable语句来获取所有这些数据?我认为这是比基于我阅读的批处理语句更简单的方法。我只拖放以下组件只是一个练习的目的 存储过程 CREATE PROCEDURE show_data(OUT FULLNAME VARCHAR(50), OUT ADDRESS VARCHAR(50)) PARAMETER STYLE JAVA LANGUAGE JAVA READS SQL DATA DYNAMIC RESULT S
CREATE PROCEDURE show_data(OUT FULLNAME VARCHAR(50), OUT ADDRESS VARCHAR(50))
PARAMETER STYLE JAVA
LANGUAGE JAVA
READS SQL DATA
DYNAMIC RESULT SETS 1
EXTERNAL NAME 'Frame.searchButton'
我使用OUT参数来使用getXXX()方法检索值。我只是有点困惑,因为这是我第一次在derby中使用存储过程
GUI
用户在数据库中搜索以下记录后。如果该值存在,它将打印到指定的文本字段
源代码
String searchRecord = searchTf.getText();
String searchQuery = "SELECT * FROM SAMPLEONLY";
ResultSet data[] = null;//Why should I use this array?
try (Connection myConn = DriverManager.getConnection(url, user, pass);
PreparedStatement myPs = myConn.prepareStatement(searchQuery);)
{
String addFullname = fullnameTf.getText();//first field
String addAddress = addressTf.getText();//second field
data[0] = myPs.executeQuery();
CallableStatement cs = myConn.prepareCall("{ call showData(?, ?)}");
cs.setString(1, addFullname);
cs.setString(2, addAddress);
boolean hasResults = cs.execute();
if (hasResults) {
ResultSet rs = cs.getResultSet();
while (rs.next()) {
String getFullname = rs.getString(1);//get the value
String getAddress = rs.getString(2);
fullnameTf.setText(getFullname);//set the text here
addressTf.setText(getAddress);
}//end of while
rs.close();//close the resultset
}//end of if
}//end of try
catch (SQLException e)
{
e.printStackTrace();
}
}//end of else
}
在搜索文本字段中插入后,它会向我抛出一个错误NullPointerExection。我遵循Derby参考手册,这样我就可以有一个编写正确存储过程的指南。这段代码大部分是我写的。如果我错过了什么错误,请引导我。请随意评论,谢谢。
使用数据[0]
时,数据
为空
。如何从数据库检索数据?谢谢