我有一段代码StringBuffer sb1 = new StringBuffer("INSERT INTO TableA ( ");

sb1.append("TableA.intA,TableA.intB,TableA.intC) select TableA.intA,?,? from TableB ");
假设TableB只有一行记录。System.out.println("sb1.toString="+sb1.toString());//此行程序打印正确。
pstmt1=con.prepareStatement(sb1.toString());//此行出错。
?处,我要添加两个 static的值。信息为java.sql.SQLException: [SQL0418] Use of parameter er not valid.请教如何解决。

解决方案 »

  1.   

    补充一下,数据库为DB2,但是也需要在MS SQL有运行。谢谢
      

  2.   

    你把System.out.println("sb1.toString="+sb1.toString());//此行程序打印正确。
    把打印出来的SQL先拿到数据库上去执行一下(补齐你那两个?代表的值),看是否能够执行成功。我是这样用的,但数据库是Sybase。
    String sql ="insert into a(no, u_version,field,entry_datetime)
    select ?,  '!',  ?,getdate()";
    pstmt = conn.prepareStatement(sql);
    pstmt.setInt(1,12345);
    pstmt.setString(2, "accept_ree");
      

  3.   

    MS SQL server 可以用了。
    测试过了,但是DB2,不行
      

  4.   

    什么叫中间的??
    你使用的PreparedStatement来执行SQL的,当然需要preStmt.setString()了
     我不太清楚为什么sql语句要用这种方式写
      

  5.   

    其他数据库不敢说,至少在sybase上可以!String sql ="insert into a(no, u_version,field,entry_datetime)"
    +"select ?,  '!',  ?,getdate()";