Java 我一直收到错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown column'';在';字段列表';

Java 我一直收到错误:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:Unknown column'';在';字段列表';,java,mysql,jdbc,Java,Mysql,Jdbc,下面是我的代码人员,我做错了什么(我被迫使用常规语句而不是PreparedStatement类,这样我就可以使用mySQL的AES_加密/解密方法): DDL DML 您可能需要在列值周围使用单引号,如下所示: String insert="INSERT INTO login(user_Name, pass_Word, cust_ID)" + " VALUES('"+user_Name+"',AES_ENCRYPT('text','"+pass_Word+"'),'"+cus

下面是我的代码人员,我做错了什么(我被迫使用常规语句而不是PreparedStatement类,这样我就可以使用mySQL的AES_加密/解密方法):

DDL

DML


您可能需要在列值周围使用单引号,如下所示:

  String insert="INSERT INTO login(user_Name, pass_Word, cust_ID)"
        + " VALUES('"+user_Name+"',AES_ENCRYPT('text','"+pass_Word+"'),'"+cust_ID+"')";

附带说明:最终会有人指出此代码受到SQL注入攻击。

请详细说明。就像准确的错误信息。你在另一个问题中提到了更多的细节。其次,在s.executeUpdate()之前放入打印insert变量的print语句。那就在mysql上试试吧。先生,你是一位绅士和学者。看到打印的SQL语句,让我自己看到我需要添加额外的引号。非常感谢。更正了像我这样的任何其他人的SQL条目:String insert=“插入登录(用户名、密码、客户ID)”+“值(“+username5+”、AES加密('text'、“+password5+”)、“+custID5+”)”);顺便说一句,我能够让Java的密码类工作,所以我不必使用mySQL内部的AES_加密/解密函数!显然,我的密码不起作用,因为我一直在为encrypt()和decrypt()方法生成两个单独的密钥!哇!但由于这个问题,我确实学到了很多关于SQL语句的知识,了解了可能出现的各种错误,最重要的是了解了解决这些错误的方法。一旦我意识到如何让Java Cipher类正常工作,我就能够使用PreparedStatement类来避免SQL注入问题。糟糕!
 public static void insertLoginData(String user_Name, String pass_Word, String cust_ID)throws IOException, SQLException, NoSuchAlgorithmException, InvalidKeyException 
 {
     . . .

     String insert="INSERT INTO login(user_Name, pass_Word, cust_ID)"
            + " VALUES("+user_Name+",AES_ENCRYPT('text',"+pass_Word+"),"+cust_ID+")";

     s.executeUpdate(insert);       
  String insert="INSERT INTO login(user_Name, pass_Word, cust_ID)"
        + " VALUES('"+user_Name+"',AES_ENCRYPT('text','"+pass_Word+"'),'"+cust_ID+"')";