Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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/8/mysql/55.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 MySQL语法异常,手动工作_Java_Mysql - Fatal编程技术网

Java MySQL语法异常,手动工作

Java MySQL语法异常,手动工作,java,mysql,Java,Mysql,我正在手动使用此查询,它运行良好,我缺少什么?如果我不使用WHERE,它会完美地执行 for (ArrayList<String> match : matches) { System.out.println(match.get(0)); // String // 7412095225787794836 String query1 = "SELECT COUNT(*) FROM `matches_players` WHERE `match_id` =

我正在手动使用此查询,它运行良好,我缺少什么?如果我不使用WHERE,它会完美地执行

for (ArrayList<String> match : matches) {
    System.out.println(match.get(0));

    // String
    // 7412095225787794836

    String query1 = "SELECT COUNT(*) FROM `matches_players` WHERE `match_id` = ?";
    PreparedStatement preparedStmt1 = (PreparedStatement) conn.prepareStatement(query1);
    preparedStmt1.setString(1, match.get(0));
    ResultSet rs1 = preparedStmt1.executeQuery(query1);
    // You have an error in your SQL syntax; check the manual that corresponds to your    
    // MySQL server version for the right syntax to use near '?' at line 1

    while (rs1.next()) {
        System.out.println("players=" + rs1.getInt("COUNT(*)"));
    }
}
for(ArrayList匹配:匹配){
System.out.println(match.get(0));
//串
// 7412095225787794836
String query1=“从'matches\u players'中选择COUNT(*),其中'match\u id`=?”;
PreparedStatement preparedStmt1=(PreparedStatement)conn.prepareStatement(查询1);
preparedStmt1.setString(1,match.get(0));
结果集rs1=preparedStmt1.executeQuery(查询1);
//您的SQL语法有错误;请检查与您的SQL语法对应的手册
//第1行“?”附近使用正确语法的MySQL服务器版本
while(rs1.next()){
System.out.println(“players=“+rs1.getInt”(“COUNT(*)”));
}
}

我认为
executeQuery
方法不带参数。SQL文本已在prepare中提供。尝试从
executeQuery
方法中删除参数

替换此项:

 ResultSet rs1 = preparedStmt1.executeQuery(query1);
                                            ^^^^^^
为此:

 ResultSet rs1 = preparedStmt1.executeQuery();

看看烟球有多大。

匹配id列是否有
INT
类型?您可以尝试
preparedStmt1.setInt(1,match.get(0.intValue())@OllieJones这是一个字符串。我知道,那太愚蠢了。但它来自ArrayList。有时整数作为字符串返回,具体取决于使用的驱动程序。您能看到字段匹配id的DDL吗?我敢打赌它是整数。@AntoanMilkov使用preparedStmt1.setString(1,“test”)我得到了相同的错误,列类型是VARCHAR。在询问异常时,您应该始终发布异常的完整堆栈跟踪。