具有Callablestatement的Java结果集

时间:2015-09-16 02:55:42

标签: java sql-server callable-statement

我试图通过存储过程从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);

0 个答案:

没有答案