Java PreparedStatement抛出语法错误

Java PreparedStatement抛出语法错误,java,mysql,jdbc,prepared-statement,Java,Mysql,Jdbc,Prepared Statement,我正在使用PreparedStatements准备一个查询,当我使用condition参数硬编码te查询时,它运行良好 但如果参数是从setString()方法传递的,则抛出错误 在错误日志中,上面我的查询看起来不错 public JSONObject getLinkedInMessages(String compId) { linlogger.log(Level.INFO, "Called getLinkedInMessages method");

我正在使用PreparedStatements准备一个查询,当我使用condition参数硬编码te查询时,它运行良好

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

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

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();

如果您在
pst.executeQuery(查询)中传递查询
作为参数,则此传递的
query
字符串优先于在
conn.prepareStatement(query)中传递的
query
字符串查询中(
从linkedin\u页面的消息中选择*,其中公司id=?
),您无法传递参数,因此您会得到错误。

rs= pst.executeQuery(query);
改为

rs= pst.executeQuery();

如果您在
pst.executeQuery(查询)中传递查询
作为参数,则此传递的
query
字符串优先于在
conn.prepareStatement(query)中传递的
query
字符串查询中(
从linkedin\u页面的消息中选择*,其中公司id=?
),您无法传递参数,因此您会得到错误。

rs= pst.executeQuery(query);
改为

rs= pst.executeQuery();

如果您在
pst.executeQuery(查询)中传递查询
作为参数,则此传递的
query
字符串优先于在
conn.prepareStatement(query)中传递的
query
字符串查询中(
从linkedin\u页面的消息中选择*,其中公司id=?
),您无法传递参数,因此您会得到错误。

rs= pst.executeQuery(query);
改为

rs= pst.executeQuery();

如果您在
pst.executeQuery(查询)中传递查询
作为参数,则此传递的
query
字符串优先于在
conn.prepareStatement(query)中传递的
query
字符串查询中(
从linkedin\u页面的消息中选择*,其中公司id=?
),您无法传递参数,因此您会得到错误。

删除此行中的参数:

rs= pst.executeQuery(query);
一定是

rs= pst.executeQuery();
因为该语句是在
PreparedStatement pst=conn.prepareStatement(查询)处准备的


execute(String sql)
继承自并将执行语句(sql),而不准备它。

删除此行中的参数:

rs= pst.executeQuery(query);
一定是

rs= pst.executeQuery();
因为该语句是在
PreparedStatement pst=conn.prepareStatement(查询)处准备的


execute(String sql)
继承自并将执行语句(sql),而不准备它。

删除此行中的参数:

rs= pst.executeQuery(query);
一定是

rs= pst.executeQuery();
因为该语句是在
PreparedStatement pst=conn.prepareStatement(查询)处准备的


execute(String sql)
继承自并将执行语句(sql),而不准备它。

删除此行中的参数:

rs= pst.executeQuery(query);
一定是

rs= pst.executeQuery();
因为该语句是在
PreparedStatement pst=conn.prepareStatement(查询)处准备的


execute(String sql)
继承自并将在未准备的情况下执行语句(sql)。

查看错误消息,linkedin页面中似乎有一个空格
查看错误消息,linkedin页面中似乎有一个空格
查看错误消息,在
linkedin\u page\u mess ages
中似乎有一个空格查看错误消息,在
PreparedStatement
上的
linkedin\u page\u mess ages
中似乎有一个空格,
execute(String)
必须引发异常(参见javadoc),然而,它在MySQL上这样做只是偶然的。在
PreparedStatement
上,
execute(String)
必须抛出一个异常(参见javadoc),然而它在MySQL上这样做只是偶然的。在
PreparedStatement
上,
execute(String)
必须抛出一个异常(参见javadoc),然而,它在MySQL上这样做只是偶然的。在
PreparedStatement
上,
execute(String)
必须抛出一个异常(参见javadoc),然而它在MySQL上这样做只是偶然的。