2016-11-09 6 views
0

私はJSPアプリケーションに取り組んでいますが、私は本当にこの時点で固執しています。 DB Adminは私にストアドプロシージャを与えて、ストアドプロシージャの値に対応する列名を渡すことを希望します。準備されたステートメントでインデックス名を渡すことができるかどうかを私に尋ねましたが、インデックス名を使用すると大きな問題になる可能性があります。ですから、準備されたステートメントではインデックス名ではなくカラム名を渡すことができるように私に提案してください。javaおよびsqlサーバーのストアドプロシージャに列名を渡しますか?

例えばは - 現在、私の手順は

mystmt = conn.preparestatement("exec p_addeditcustomer ?,?,?"); 
    mystmt.setString(1,"A"); 
    mystmt.setString(2,"B"); 
    mystmt.setString(3,"C"); 

と呼ばれていると言う、私のDB管理者は、私はそれを行うことができる方法を教えてください私は、このような

mystmt.setString("@CustomerName","A"); 
mystmt.setString("@CustomertTitle","B"); 
mystmt.setString("@CustomerCountry","C"); 

として渡したいです。私は本当に無知です。

答えて

2

ただ、これはストアドプロシージャで使用されることを意図して、CallableStatementを使用します。

CallableStatement cstmt = conn.prepareCall("{call p_addeditcustomer(?,?,?)}"); 

    cstmt.setString("CustomerName", "A"); 
    cstmt.setString("CustomertTitle", "B"); 
    cstmt.setString("CustomerCountry", "C"); 
+0

: - は、SQL Serverのストアドプロシージャで作業をCallableStatementのでしょうか? – Farheen

+0

@Farheen:はい、SQL Serverでも動作するはずです。追加の例がここにあります:https://programmaticponderings.com/2012/08/24/calling-sql-server-stored-procedures-with-java-using- jdbc /。 – Berger

+0

@Farheenその逆です。 JDBCは標準化されたAPIであり、データベースベンダーはそれを実装するドライバを提供します。だから、SQL ServerはCallableStatementをサポートしています。 – Gimby

関連する問題