RT
我的mysql设置的编码为utf8, 在java里边连接数据库的链接写的是:
String DBURL = "jdbc:mysql://localhost:3306/store_and_coupon_info?useUnicode=true&characterEncoding=utf8";
但是就是查询不出结果来,如果sql语句里边没中文就可以查询出来,救命啊- -

解决方案 »

  1.   

    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.PreparedStatement;public class DBOperator {
    private static final String DBDRIVER = "org.gjt.mm.mysql.Driver";
    private static final String DBURL = "jdbc:mysql://localhost:3306/store_and_coupon_info?useUnicode=true&characterEncoding=utf8";
    private static final String USERNAME = "root";
    private static final String PASSWORD = "ght"; public static ResultSet queryByStoreName(String storeName) {
    //System.out.println(storeName);
    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;
    String sql = "select storeName, storeType, storeAddress, longitude, latitude from store where storeName like ?";
    try {
    Class.forName(DBDRIVER);
    conn = DriverManager.getConnection(DBURL, USERNAME, PASSWORD);
    pstmt = conn.prepareStatement(sql);
    pstmt.setString(1, "%" + storeName + "%");
    rs = pstmt.executeQuery();

    while (rs.next()) {
    System.out.println(rs.getString(1));
    System.out.println(rs.getString(2));
    System.out.println(rs.getString(3));
    System.out.println(rs.getDouble(4));
    System.out.println(rs.getDouble(5));
    }
    } catch (ClassNotFoundException e) {
    e.printStackTrace();
    System.exit(-1);
    } catch (SQLException e) {
    e.printStackTrace();
    System.exit(-1);
    } finally {
    try {
    rs.close();
    pstmt.close();
    conn.close();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    }
    return rs;
    }
    }
      

  2.   

    哦,刚刚发的代码有些错误,ResultSet关闭之后,我又把它返回了,不过这个应该不影响查询
      

  3.   

    useUnicode=true&characterEncoding=utf-8
    是不是少个 - 。
      

  4.   

    我又测试了一下,发现直接用jdbc来查是没问题的,这个字符串是从android客户端发来的就有问题了
      

  5.   

    没说清楚,我的意思是如果直接定义一个字符串去查询,是没有问题的,但是我这个storeName字符串是从android客户端接收来的,这样子就不行了,我尝试把这个字符串转码成utf8的:
    new String(storeName.getBytes(), "utf8");
    还是没成功....