我在写一个java程序,用的是jdk1.6和mysql5.1,用sql语句查询的时候发现一个问题,就是我在sql语句中where条件里以中文字符串作为条件时,总是查不出结果,而同样的sql语句在mysql图形界面里查询则完全正常,例如,selec * from 表名 where 字段='中文字符串'则永远查不到结果,但一样的sql语句直接在数据库里查询则结果完全正常,似乎是中文字符编码问题,但不是很清楚其中的原因,请教各位了,有遇到过类似情况的,请多指教。

解决方案 »

  1.   

    string a="select * from 表名 where 字段="'"+传过来的字段值+"'";传过来的值最好用'"+ +"'裹起来
      

  2.   

    查询语句如下:string sql = "select * from tb_a where name='测试字符'";这样查出的是空结果,但这句话放在mysql的图形界面里查询能查到正常结果,其他语句应该都没错,不然就直接报错了,现在就是空结果,没有报错
      

  3.   

    如果把where条件去掉,也能得到正确的结果,就是加了中文字符条件,程序里就查不到结果了
      

  4.   

    这个问题牵扯到其他部分代码吗,如果其他部分有问题的话,我把where条件去掉应该也会有问题吧,而且eclipse应该也会报错吧,我的代码比较乱,所以不太想全部贴上来,应该不是其他代码的问题吧,敬请谅解
      

  5.   

    你可以把那段代码  打印到控制台  然后再将该sql语句复制到mysql中看看
      

  6.   

    sql中的中文编码格式跟数据库的编码格式不一样,这个问题很常见的
      

  7.   

    转换字符集试一下 sql = new String(sql.getBytes(),"ISO-8859-1");  我的程序是UTF-8 mysql是 ISO-8859-1 按你的情况调整里面的字符集参数
      

  8.   

    编码问题?是不是MySQL编码不对?改一下编码集试试,如果不行的话试一下台电脑运行一下,我估计是你代码写得有点问题,你可以把部分内容贴出来,还有你的SQL语句用PrepareStatement(String sql)来试一下,这个可比避免一些疏忽。
      

  9.   

    已经解决了,确实是编码问题,中文字符传到数据库就变乱码了,我把数据库和jdbc的uri字符集都指定为UTF8就全都正常了。搞了很久才弄好,还是多谢大家回帖了,呵呵。