我正在开发JSP应用程序,现在我真的很困。 DB Admin给了我一个存储过程,他希望我传递与该存储过程中的值相对应的列名。我问他是否可以在准备好的语句中传递索引值而不是列名,但是他说我如果使用索引值可能是一个主要问题。因此,请提出一种建议,使我可以在准备好的语句中传递列名,而不是索引值。

例如-当前说我的程序被称为

 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");


请告诉我我该怎么做。我真的很笨。

最佳答案

只需使用CallableStatement,它就可以与存储过程一起使用:

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

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

07-27 13:50