//假设有个表t_1有两个字段分别是f1,f2PreparedStatement ps = conn.prepareStatement("INSERT INTO t_1(f1,f2) VALUES(?,?)");ps.setString(1,"\"你好\"");
ps.setString(2,"'世界'");
ps.executeUpdate();

解决方案 »

  1.   

    仍然不行,
    PreparedStatement p = conn.prepareStatement("insert into a (a) values(?)");
    p.setString(1,"fdfddfd'ff");
     这时它输出的SQL语句成了:insert into a (a) values('fdfddfd\\'ff')
    这是驱动的问题吗?
      

  2.   

    liusoft(凤梨罐头) :你的MYSQL的驱动是什么?
      

  3.   

    PreparedStatement ps = conn.prepareStatement("INSERT INTO t_1(f1,f2) VALUES(?,?)");ps.setString(1,"你好");
    ps.setString(2,"世\'界"); // 这样插入带单引号的
    ps.executeUpdate();
      

  4.   

    accp:这样也不行,这时我输出
    System.out.println(p.toString());
    变成了:insert into a (a) values('世界\\'好')
      

  5.   


    accp:这样也不行,这时我输出
    System.out.println(p.toString());
    变成了:insert into a (a) values('世\\'界')
      

  6.   

    是驱动程序在处理参数的时候的特殊处理,对于用户无需知道是'是变成''(SQL Server)或者mySQL /'或者其他的方式.
      

  7.   

    manboo(非典型天使) :是啊,是无需知道的,可现在执行不了,老是说SQL语句有语法问题,这该如何解决啊?
      

  8.   

    是呀,你管他变成什么,只要能插进去就行了~
    我可以保证这种绝对能插进出单引号,如果不行,是别的原因
    ps.setString(2,"世\'界"); // 这样插入带单引号的
      

  9.   

    或者把这句话放到MySql中看能不能执行
    insert into a (a) values ('世\'界')
      

  10.   

    accp:的mysql中可以执行,我现在的驱动是3.0.8的,可我在2.0.14下就可以的,我怀疑是驱动和问题!
      

  11.   

    在sql里单引号用两个单引号替代:
    '替换成''
      

  12.   

    titaninwinter(泰坦巨人):我试过了,不管用的
      

  13.   

    同志们,终于解决了,3.0.8不稳定,我现在下了3.1.0的ALPHA版,完全没有问题的
      

  14.   

    非常感谢大家的帮助,顺便说一下3.1.0下必须要在是JDBC URL 后面加上useUnicode=true&characterEncoding=gbk才能稳定工作,在我的机子上就是这样的