Java MySQL语法异常,手动工作
我正在手动使用此查询,它运行良好,我缺少什么?如果我不使用WHERE,它会完美地执行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` =
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。在询问异常时,您应该始终发布异常的完整堆栈跟踪。