csmt.registerOutParameter(1,java.sql.Types.BIGINT); //设置输出参数 返回的是最新的ID
csmt.registerOutParameter(2,java.sql.Types.BIGINT); //设置输出参数 返回的是最新的ID
1是return返回的!你没写,默认好象是0,不是最新的ID
第2个才是

解决方案 »

  1.   

    Create  procedure InsertNews@newsTitle nvarchar(64),
    @newsStat int,
    @newsContent text,
    @NewsID bigInt OUT
    asINSERT INTO
    w_news(newsTitle,newsStat,newsContent)
    VALUES(@newsTitle,@newsStat,@newsContent)SET @NewsID = @@IDENTITY
    Go========================================================
    String NewsTitle = "haha";
      int NewsStat = Integer.parseInt("123");  
      
      String newsContent = "<<娘,大哥他回来了>>";
      StringBuffer sb_InsertValue = new StringBuffer(NewsTitle+","+NewsStat+","+newsContent);
    java.sql.CallableStatement csmt =
               conn.prepareCall("{call InsertNews(?,?,?,?)}");        csmt.setString(1,NewsTitle);
            csmt.setInt(2,NewsStat);
            csmt.setString(3,NewsContent);
           csmt.registerOutParameter(4,java.sql.Types.BIGINT); //设置输出参数 返回的是最新的ID
            csmt.execute();
            int NewsID=csmt.getInt(4);