当前位置: 首页 > 面试题库 >

PreparedStatement引发语法错误[重复]

巫马翰翮
2023-03-14
问题内容

这个问题已经在这里有了答案

MySQLSyntaxErrorException在“?”附近
尝试执行PreparedStatement时
(2个答案)

5年前关闭。

我使用PreparedStatements准备查询,当我使用condition参数对查询进行硬编码时,它运行良好。

但如果从setString()方法传递参数,则会抛出错误。

com.mysql.jdbc.JDBC4PreparedStatement@2cf63e26: select * from linkedin_page_mess ages where company_id = '2414183' com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 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

在错误日志中,我的查询上方看起来不错。

public JSONObject getLinkedInMessages(String compId)
    {
            linlogger.log(Level.INFO, "Called getLinkedInMessages method");
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;

        JSONObject resObj = new JSONObject();
        JSONArray tempArray = new JSONArray();
        try
        {
            conn = InitOrGetConnection();
            String query = "select * from linkedin_page_messages where company_id = ?";
            PreparedStatement pst=conn.prepareStatement(query);
            pst.setString(1, compId);
            System.out.println("\n\n"+pst.toString());
            rs= pst.executeQuery(query);


             // process resultset logics
        }
       catch(Exception e)
        {   
            System.out.println(e);
            linlogger.log(Level.INFO, "Exception occured "+e.toString());
        }
    }

PreparedStatements有什么问题吗?


问题答案:

删除此行中的参数:

rs= pst.executeQuery(query);

一定是

rs= pst.executeQuery();

因为该声明是在 PreparedStatement pst=conn.prepareStatement(query);

execute(String sql)是从Statement继承的,将在不准备状态的情况下执行状态(sql)。



 类似资料:
  • 我最近在Java PreparedStatements中遇到了这个问题。我有以下代码: 其中方法是 但是,它一直抛出这个错误: 当我以幼稚的方式做“...

  • 问题内容: 我收到错误消息 “您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以找到在第1行的“ orderr”附近使用的正确语法” -因此,我认为错误是用了两个 ‘, 但是在我的代码中我没有用 ‘ 。注意,该表实际上被命名为订购者。 问题答案: 在大多数数据库中,您无法参数化表名称之类的对象名称,在MySQL中,理论上您可以做到,因为默认情况下,MySQL Connector

  • 问题内容: 我有一个表,其中有存储过程的名称。 但是在最后一步,我得到了错误 ‘@object’附近的语法不正确。 是因为类型还是什么? 这是针对SQL Server 2012 问题答案: 你不能那样做。您需要使用动态sql。就像是 :

  • 我的语句似乎抛出了语法错误。我已经阅读了语句应该如何编写(以及脚本中的其他语句没有问题),因此我不确定为什么会有问题。 <代码>

  • 我想知道是否有人可以帮助我,我一直在WordPress主题上得到以下错误 分析错误:语法错误,意外' 如果(!empty($smof_数据['菜单响应图标']

  • 希洛!我试图执行一个mysql查询,但我遇到了上面的问题。 这是我的代码: 它的结果是: 我发现了一些类似的问题,但我想不出解决办法。有人能帮我吗?