【问题标题】:Passing column names in stored procedure in java and sql server?在java和sql server的存储过程中传递列名?
【发布时间】:2016-11-09 08:57:58
【问题描述】:

我正在开发 JSP 应用程序,我真的被困在这一点上。数据库管理员给了我一个存储过程,他希望我传递与存储过程中的值相对应的列名。我问他是否可以在准备好的语句中传递索引值而不是列名,但他说如果我使用索引值可能是一个主要问题。所以,请给我建议一种方法,以便我可以在准备好的语句中传递列名而不是索引值。

例如 - 目前说我的程序被调用

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

请告诉我该怎么做。我真是一头雾水。

【问题讨论】:

    标签: java sql-server stored-procedures


    【解决方案1】:

    只需使用CallableStatement,这是用于存储过程的:

      CallableStatement cstmt = conn.prepareCall("{call p_addeditcustomer(?,?,?)}");
    
      cstmt.setString("CustomerName", "A");
      cstmt.setString("CustomertTitle", "B");
      cstmt.setString("CustomerCountry", "C");
    

    【讨论】:

    • :- callablestatement 可以与 SQL Server 存储过程一起使用吗?
    • @Farheen:是的,它也应该适用于 SQL Server,您可以在这里找到更多示例:programmaticponderings.com/2012/08/24/…。
    • @Farheen 正好相反。 JDBC 是一个标准化的 API,数据库供应商提供了实现它的驱动程序。所以是的,SQL Server 支持 CallableStatement。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-05
    • 2018-10-03
    相关资源
    最近更新 更多