来自Java的INSERT MySql时出现语法错误

Zed*_*ead 1 java mysql syntax timestamp insert

尝试从Java中将一些值插入Mysql时出现语法错误.

我的代码看起来像这样:

date = new SimpleDateFormat("yyyy-MM-dd").parse(nextLine[0]);
        java.sql.Timestamp sqlDate = new java.sql.Timestamp(date.getTime());
        st.executeUpdate("INSERT INTO " + tick + "(day, open, high, low, close, volume) VALUES (" + sqlDate + ", " + nextLine[1] + ", " + nextLine[2] + ", " + nextLine[3] + ", " + nextLine[4] + ", " + nextLine[5] + ")"); 
Run Code Online (Sandbox Code Playgroud)

我的例外:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法中有错误; 检查与MySQL服务器版本对应的手册,以便在'00:00:00.0,128.40,128.50,127.30,128.20,1415200附近'使用正确的语法''在第1行

很高兴任何帮助:)

Jon*_*eet 6

虽然可以修复即时语法错误,但我强烈建议不要这样做.您根本不应该直接在SQL中包含这些值.

而是使用参数化查询PreparedStatement,并将值设置为参数.在这种情况下,您可以使用PreparedStatement.setTimestamp设置值 - 当然,在首先更改要参数化的查询之后.

参数化SQL的好处:

  • 防止SQL注入攻击
  • 避免容易出错的字符串转换(在本例中见证)
  • 分离代码和数据,导致SQL更易于阅读