create proc k_test
  @i int
as
select * from Sys_User where iId=@iselect * from News_Article where iId=@ireturn (0)-------------------------------------------
1)t_stmt.setInt(1,1);
2)t_stmt.setInt("@i",1);数据库为sql server,我的存储过程如上,当我设置参数时用1可以,用2不可以呢???用2总是出错

解决方案 »

  1.   

    create proc k_test
      @strTest1 nvarchar(100),@i int,@strTest2 nvarchar(100)
    as
    只能用形如:
        t_stmt.setString(1,strTest1);
        t_stmt.setInt(2,1);
        t_stmt.setString(3,strTest2);
    第一个参数的值是对应你在存储过程中声明的第几个参数,第二个值对应你在存储过程中声明的参数类型.
      

  2.   

    我用过t_stmt.setInt(1,1);的形式,第一个参数表示存储过程的第几个变量,第二个参数表示值;由于现在手头没有环境不好试,可以建议楼主试试将t_stmt.setInt("@i",1);改成t_stmt.setInt("i",1);看用参数名行不行
      

  3.   

    在CallableStatement对象里有一个方法是setInt对应字符形参数名称的
    t_stmt.setInt("@i",1);改成t_stmt.setInt("i",1);
    这样也不行
      

  4.   

    好像是jdk帮助写的有问题,jdk帮助中:
    public void setInt(String parameterName,int x)  throws SQLException
    实际使用却是
    public void setInt(int parameterNo,int x)  throws SQLException
      

  5.   

    逍遥可以查一下,我还真没有看到setInt(String parameterName,int x)
      

  6.   

    在j2se的文档里,不是j2ee的,以下的页面:
    Jdk\j2sdk-1_4_1-doc\docs\api\java\sql\CallableStatement.html
      

  7.   

    laughsmile(海边的星空):
    好像是jdk帮助写的有问题,jdk帮助中:
    ...
    实际使用却是
    ...我的意思是没有看到使用setInt(String parameterName,int x)成功的例子,都是使用public void setInt(int parameterNo,int x) 的例子