【问题标题】:how do I changed the character encoding format to UTF-8 in the preparedStatement.如何在preparedStatement中将字符编码格式更改为UTF-8。
【发布时间】:2014-08-04 18:16:49
【问题描述】:

私有静态布尔insertIntoNewTable() {

    Connection dbConnection = getDBConnection();
    System.out.println("CONNECTED TO DB");
    PreparedStatement preparedStatement = null;
    String countString;
    String fileName;
    String seed;
    ResultSet rs = null;

    BufferedReader br = new BufferedReader(new FileReader("/home/aoblah/Documents/Metaphor-July/Russian/MotherRussia"));
    String line;
    while(null != (line = br.readLine())){
        splitsVille = line.split(":");
        fileName = splitsVille[0].trim();
        seed = splitsVille[1].trim();
        countString = "SELECT COUNT(*) FROM metaphor_repository.source_domain_russian_OY2_v3 where filename = ? AND seed = ?" ;
        preparedStatement = dbConnection.prepareStatement(countString);
        preparedStatement.setString(1, fileName);
        preparedStatement.setString(2, seed);

        rs = preparedStatement.executeQuery();
        if (rs.next()) {
            int numberOfRows = rs.getInt(1);
            System.out.println("numberOfRows= " + numberOfRows);
        } else {
            System.out.println("error: could not get the record counts");
        }


    }

    rs.close();
    preparedStatement.close();
    dbConnection.close();

    return true;        
}

我需要此代码生成的行数,但我得到的都是零。当我在 MySQL 工作台中执行相同的查询时,我得到了正确的答案。请帮我找出问题。

我知道问题出在哪里。 where 子句中的第二列包含俄语字符,它们显示为“?????”当我打印出来的时候。当我单独打印它们时,它们可以在控制台中很好地打印出来。

【问题讨论】:

标签: java database jdbc count


【解决方案1】:

您需要刷新结果。 jdbc 在关闭连接之前缓冲插入并刷新它们。 插入后使用dbConnection.commit();

最后是数据库连接中的编码问题,通过在连接中设置UTF-8解决了: jdbc:mysql://server/database?characterEncoding=UTF-8 正如Java PreparedStatement UTF-8 character problem中建议的那样

【讨论】:

【解决方案2】:

我的第一个想法是,您分配给文件名和种子变量的值不会创建一个 WHERE 子句,该子句对于表中的任何行都为真。我会加入一个 println 来显示这些值并确认它们是您期望的那样。此外,某些数据库在 WHERE 子句中可能区分大小写,因此您可能需要考虑这一点。

【讨论】:

  • 我发现了问题所在,但不知道如何解决。第二 ”?”种子包含俄语字符,当我打印出“prepraedStatement”时,它们显示为?????。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 2015-05-21
  • 1970-01-01
  • 2011-08-09
相关资源
最近更新 更多