首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

棘手的有关问题。PostgreSQL 数据库查询有关问题。在java中居然不能查询中文。

2012-09-14 
棘手的问题。PostgreSQL 数据库查询问题。在java中居然不能查询中文。。。。。。我要查询的是在 user 表中找 name

棘手的问题。PostgreSQL 数据库查询问题。在java中居然不能查询中文。。。。。。

我要查询的是在 user 表中找 name=‘王梅’的数据。
SQL语句是:SELECT * FROM user WHERE name='王梅' ,这条语句在pgAdmin中能够查询出。但是写在JAVA里查不出。


先看代码。

Java code
package jdbc;import java.sql.DriverManager;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;public class Jdbc_test{    public static void main(String args[])    {        String sql_ = "SELECT * FROM user WHERE name='王梅'";                Properties pro_ = new Properties();        pro_.put("user", "postgres");        pro_.put("password", "zhimakaimen(^-^)");        try        {            Class.forName("org.postgresql.Driver");        }        catch (ClassNotFoundException e)        {            System.out.println( e );        }        try        {            Connection connection = DriverManager.getConnection("jdbc:postgresql://10.4.201.36:5432/AcapDB", pro_);            Statement stmt = connection.createStatement();            ResultSet rs = stmt.executeQuery(sql_);            while (rs.next())            {                //System.out.println("rs.next()");            }            rs.close();            stmt.close();            connection.close();        }        catch (SQLException e)        {            System.out.println( e );        }}}


理论上应该能查出来吧。但是查不出的。
还有一点,我将文件以GBK编译或UTF编译,都不行的。

请问这是怎么回事。

[解决办法]
那就是你JAVA编码有问题了。
[解决办法]
设置以下客户端编码试试:

set client_encoding = utf8;
[解决办法]
数据库编码改成UTF8的吧。
[解决办法]
不懂JAVA,不过既然在pgAdmin中可以查询出来,我想会是不是数据引擎问题,比如user,name是数据引擎关键字?你可以尝试在SQL语句中给它们加上[]号...
[解决办法]
如果页面上出现问号或什么都不出的话,可能是编码的问题,这是因为,你从外部程序中读数据时,程序接口要的与数据库传出来的数据格式是不一致造成的。 
建议在调用存储过程前执行如下语句: 
php程序执行(mysql_query ,mysqli_query 是PHP函数,其他程序也有类似的函数,java 的不太清楚,但是你要用java的,再试试。): 
mysql_query("SET NAMES 'utf8'",$link); // 你可以更改其他字符集,我使用的是 utf8 。你的程序是用哪个字符集存储的,就用哪个,我的程序是utf8,不过,一般程序都是这个字符集,有些例外,你可以自己定义存储的字符集。
或: 
mysqli_query("SET NAMES 'utf8'",$link); 

问题即可解决。
[解决办法]
又是 编码问题,老生常谈了。

最简单的方法
把 '王梅' 用 native2ascii.exe 转成 \u738b\u6885 

在JAVA 代码中写中文就是你的不对。

数据库 UTF-8 (一定要养成习惯)
java UTF-8
JSP UTF-8

如果是页面来的变量 ,转一下就行了。或者做个 FILTER

  

热点排行