Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在preparedStatement中将字符编码格式更改为UTF-8。_Java_Database_Jdbc_Count - Fatal编程技术网

Java 如何在preparedStatement中将字符编码格式更改为UTF-8。

Java 如何在preparedStatement中将字符编码格式更改为UTF-8。,java,database,jdbc,count,Java,Database,Jdbc,Count,私有静态布尔插入新表(){ 我需要这段代码生成行数,但我得到的都是零。当我在MySQL workbench中执行相同的查询时,我得到了正确的答案。请帮助我找到问题所在 我知道问题出在哪里了。where子句中的第二个columen包含俄语字符,它们显示为“??”当我打印出来时。当我单独打印出来时,它们在控制台中可以很好地打印出来。我的第一个想法是,分配给文件名和种子变量的值不会创建一个WHERE子句,该子句对表中的任何行的计算结果都为true。我会输入一个println来显示这些值,并确认它们是什

私有静态布尔插入新表(){

我需要这段代码生成行数,但我得到的都是零。当我在MySQL workbench中执行相同的查询时,我得到了正确的答案。请帮助我找到问题所在


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

我的第一个想法是,分配给文件名和种子变量的值不会创建一个WHERE子句,该子句对表中的任何行的计算结果都为true。我会输入一个println来显示这些值,并确认它们是什么您希望是这样。此外,有些数据库在WHERE子句中可能区分大小写,因此您可能必须对此进行说明。

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

最后,问题是数据库连接中的编码,通过在连接中设置UTF-8解决:
jdbc:mysql://server/database?characterEncoding=UTF-8

正如

中所建议的,我知道了问题所在,但不知道如何解决。第二个“?”种子包含俄语字符,当我打印“预印声明”时他们显示为?????。问题就在那之前。当我打印preparedStatement时,第二列显示为???,而不是俄语字符,没有看到。你试过这个->可能的重复吗
    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;        
}