我有一段代码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.请教如何解决。
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.请教如何解决。
把打印出来的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");
测试过了,但是DB2,不行
你使用的PreparedStatement来执行SQL的,当然需要preStmt.setString()了
我不太清楚为什么sql语句要用这种方式写
+"select ?, '!', ?,getdate()";