PreparedStatement pstmt = CONN.getConn().prepareStatement("INSERT INTO ? (c1,c2) values
(?,?)")
pstmt.setString(1,"table1");
pstmt.setString(2,"abc");
pstmt.setString(3,"def");
pstmt.addBatch();可是执行 executeBatch() 的时候,提示没有声明变量@p1
请问这种情况能实现么?
表名不一样的情况,但表结构一样的

解决方案 »

  1.   

    pstmt.setString(1,"table1");写法肯定不对!这个将对参数加入单引号,也就是类型转换如values('a', 'bb');所以insert into  'table1'肯定是不对的
    还是如楼上说的,用参数,在程序里拼sql吧另外!你的这个表结构是否合理呢?
      

  2.   

    如果在程序里面传参数,就不能用批处理了
    我现在想利用 sql server 的参数功能,这样才能达到需要的效率
      

  3.   

    批处理----在java程序里转表名不一样是批处理?
    用的是啥数据库?用的是有procedure的数据库就把这写成存储过程调用
      

  4.   

    prepareStatement肯定不行的,可以试一下CreateStatement,这个只能完全拼SQL,不能再绑定参数了.