PrepareStatement不在select query java中工作

rak*_*rak 0 java prepared-statement where

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);
Run Code Online (Sandbox Code Playgroud)

显示 您的SQL语法中有错误; 查看与您的MySQL服务器版本对应的手册,以便在''13a'附近使用正确的语法,并在第1行使用cmp_id!= 3'

T.J*_*der 6

你正在打电话st.executeQuery和传入checkq,这让我认为st是一个Statement实例.checkq当然,字符串输入不是有效的SQL语句 - 它中包含PreparedStatement占位符.你应该打电话executeQueryPreparedStatement(而不是简单地使用简单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();
Run Code Online (Sandbox Code Playgroud)