2016-11-09 109 views
0

我正在研究JSP應用程序,並且我在這一點上很困難。數據庫管理員給了我一個存儲過程,他希望我傳遞與存儲過程中的值相對應的列名稱。我問他是否可以在準備好的聲明中傳遞索引值,而不是列名,但他說我可以成爲一個主要問題,如果我使用索引值。所以,請給我一個建議,以便我可以在準備好的語句中傳遞列名而不是索引值。在java和sql server中傳遞存儲過程中的列名?

e.g - 目前說我的過程被稱爲

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

現在,我的數據庫管理員希望我通過諸如

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

: - 將與CallableStatement的SQL Server存儲過程的工作? – 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