我创建了一个存储过程,我可以在其中获取我在以下文本字段中插入的所有数据。如何通过调用可调用语句来获取所有这些数据?我认为这是基于我阅读内容的Batch Statement最简单的方法。我只是为了实践目的而拖放以下组件。
存储过程
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()方法检索值。我有点混淆,因为这是我第一次在德比中使用存储过程。
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
}
在“搜索”文本字段中插入后,它会向我抛出错误NullPointerExeption。我遵循德比参考手册,因此我可以让指南编写正确的存储过程。这段代码是我的大部分内容。如果我错过了什么错误,请引导我。随意评论谢谢。