执行SQL查询时MySQL语法错误

标签 mysql jdbc

当我尝试运行下面的代码时,我得到:

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`

String query="Select * from DB.Admin where username = ?";
PreparedStatement st=connection.prepareStatement(query);
st.setString(1,request.getParameter("loginid"));
ResultSet rst= st.executeQuery(query);
int count=0;
while(rst.next()){
   count++;
}

请帮助我。

最佳答案

您必须从 executeQuery 调用中删除 query 参数。如果您提供参数,则将在不绑定(bind)任何值的情况下执行查询(有关详细信息,请参阅 Statement) - 这就是语法(即 ?)无效的原因。

像这样执行查询:

ResultSet rst = st.executeQuery();

作为旁注:您应该始终使用 try-with-resources 包装 ConnectionPreparedStatementResultSet em> block ,例如

try (ResultSet rst = st.executeQuery()) {
    // read the results
}

这样您就可以确保无论发生什么情况ResultSet都会关闭。

关于执行SQL查询时MySQL语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36583984/

相关文章:

php - MySQL:JOIN 和条件语句

php - 如何在 Codeigniter 中查询 2 表数据库

java - 无法使用 Oracle 数据库更改通知获取表名称

java - 更新 JComboBox

java - 找不到适用于 jdbc :derby:myDBtest 的合适驱动程序

php - 如果日期列日期不是当前的,Mysql INSERT

php - 如何在 MySQL 中获取印地语和古吉拉特语的数据?

php - Laravel 如何在查询中传递多个值

java - 为什么我需要一个连接来创建 PreparedStatements?

java - JDBC 中具有单个语句的多个结果集