首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将preparedStatement中的字符编码格式更改为UTF-8 .

如何将preparedStatement中的字符编码格式更改为UTF-8 .
EN

Stack Overflow用户
提问于 2014-08-04 18:16:49
回答 2查看 1.5K关注 0票数 0

私有静态布尔insertIntoNewTable() {

代码语言:javascript
复制
    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子句中的第二列包含俄语字符,它们显示为“?”当我打印出来的时候。当我把它们单独打印出来时,它们在控制台中打印的很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-04 18:51:26

你得把结果冲洗一下。jdbc正在缓冲插入并在关闭连接之前刷新它们。插入后使用dbConnection.commit();

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

票数 2
EN

Stack Overflow用户

发布于 2014-08-04 18:38:23

我的第一个想法是,分配给fileName和种子变量的值不会为表中的任何行创建一个WHERE子句,该子句的计算结果为true。我会提交一个println来显示这些值,并确认它们是您所期望的。此外,某些数据库在WHERE子句中可以区分大小写,因此您可能必须考虑到这一点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25125019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档