Java MySQL语法异常

Java MySQL语法异常,java,mysql,Java,Mysql,公共静态登录登录(字符串用户名)引发异常{ String query="select user_name, password from login where user_name="+userName; System.out.println(query); Statement st=null; ResultSet result=null; LoginBean bean=new LoginBean(); try{ st=con.cr

公共静态登录登录(字符串用户名)引发异常{

    String query="select user_name, password from login where user_name="+userName;
    System.out.println(query);

    Statement st=null;
    ResultSet result=null;
    LoginBean bean=new LoginBean();
    try{
        st=con.createStatement();
        result=st.executeQuery(query);

        while(result.next()){

            bean.setUserName(result.getString("user_name"));
            bean.setPassword(result.getString("password"));
        }
        return bean;
    }
    finally
    {
        if(result!=null)
        {
            result.close();
        }
        if(st!=null)
        {
            st.close();
        }            
    }
}

我正在执行此方法,但它给了我一个错误,即
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:where子句中的未知列“admin”
我检查了语法,但找不到错误。

用户名“admin”周围缺少引号,这使得
mysql
认为您指的是列名而不是值

也就是说,您应该使用
PreparedStatement

String query="select user_name, password from login where user_name=?";
System.out.println(query);

PreparedStatement st=null;
ResultSet result=null;
LoginBean bean=new LoginBean();
try{
    st=con.prepareStatement(query);
    st.setString(1,userName);
    result=st.executeQuery();
    ...

“我已经检查了语法”-有吗?您能在问题中包括您试图执行的SQL查询的实际运行时值吗?告诉我们您已经检查了它,并且您认为它是正确的,这与向我们展示它以便我们可以检查它是不同的。我希望我们能根除所有不使用
PreparedStatement
的教程和代码片段。这是什么方法setString(1,userName);对于???@TaimoorKhan,它用存储在
userName
变量中的值替换SQL字符串中的