PrepareStatement 在 select 查询 java 中不起作用

PrepareStatement not working in select query java

String checkq="select * from "+Dbc.TB_COMPANY+" where cmp_name=? and cmp_id!=?";
        pst=con.prepareStatement(checkq);
                pst.setString(1,"test"); pst.setString(2,"2")
        rs=st.executeQuery(checkq);

显示 您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在第 1

行的“13a”和 cmp_id!=3' 附近使用的正确语法

您正在调用 st.executeQuery 并传入 checkq,这让我认为 st 是一个 Statement 实例。 checkq 中的字符串当然不是有效的 SQL 语句——它包含 PreparedStatement 占位符。您应该在 PreparedStatement 上调用 executeQuery(根本不使用简单的 Statement):

String checkq="select * from "+Dbc.TB_COMPANY+" where cmp_name=? and cmp_id!=?";
pst=con.prepareStatement(checkq);
pst.setString(1,"test");
pst.setString(2,"2")
// Not: rs=st.executeQuery(checkq);
rs = pst.executeQuery();
String checkq="select * from "+Dbc.TB_COMPANY+" where cmp_name=? and cmp_id!=?";
        pst=con.prepareStatement(checkq);
                pst.setString(1,"test"); pst.setString(2,"2")
        rs=pst.executeQuery(checkq);

您同时使用了 statement 和 preparedStatement

确保使用 preparedStatement