我试图通过存储过程从sqlserver数据库中检索我的java应用程序中的数据。 这是我的简单存储过程
CREATE PROC slctBrg (@merk VARCHAR(50))
AS
SELECT nama_barang FROM barang WHERE merk = @merk
这是我的java代码:
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.util.Scanner;
public class TampilData {
/**
* @param args
*/
public static void main(String[] args) {
Connection conn = null;
CallableStatement myStmt = null;
ResultSet rs = null;
try {
String dbUrl= "jdbc:sqlserver://ZAFRAN-PC:1433;" +
"databaseName=presentasi;integratedSecurity=true";
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
conn = DriverManager.getConnection(dbUrl);
myStmt = conn.prepareCall("call slctBrg(?)");
Scanner scan = new Scanner(System.in);
System.out.print("\nMasukkan Merk Barang: ");
String brand = scan.next();
scan.close();
myStmt.setString(1, brand);
myStmt.registerOutParameter(2, java.sql.Types.VARCHAR);
rs = myStmt.executeQuery();
while (rs.next()) {
String merk = rs.getString("nama_barang");
System.out.println(merk);
}
System.out.print("inilah hasilnya");
} catch (Exception e) {
// TODO: handle exception
}
}
}
程序只是要求我输入数据,输入过程后没有显示任何内容。我认为问题出在结果集中。 任何人都可以更正我的代码,并告诉如何解决此错误? 感谢
----- ------ EDIT
解决问题
我解决了这个问题。首先,我必须将@merk Varchar(50)
设置为输出参数。代码应该像这样@merk Varchar(50) output
。
然后,在此代码上
myStmt.setString(1, brand);
myStmt.registerOutParameter(2, java.sql.Types.VARCHAR);
rs = myStmt.executeQuery();
while (rs.next()) {
String merk = rs.getString("nama_barang");
System.out.println(merk);
}
将myStmt.registerOutParameter(2, java.sql.Types.VARCHAR);
更改为myStmt.registerOutParameter(1, java.sql.Types.VARCHAR);
将String merk = rs.getString("nama_barang");
更改为String merk = rs.getString(1);