java mysql数据库插入使用预处理语句

时间:2018-03-24 08:13:32

标签: java mysql sql prepared-statement

我已经看到很多关于这个主题的问题,但似乎没有一个是正确的解决方案。我试图使用preparedstatements在我的数据库中插入一个新行但是我收到一个错误:

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '1, 2, 3, 4, 5, 6, 7, 8, 9, guess, answer, value) VALUES (17, 187, 224, 276, 19, ' at line 1

这是我的代码:

String query = "INSERT INTO block (1, 2, 3, 4, 5, 6, 7, 8, 9, guess, answer, value)" + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
        PreparedStatement pst = con.prepareStatement(query);
        pst.setInt(1, array[0]);
        pst.setInt(2, array[1]);
        pst.setInt(3, array[2]);
        pst.setInt(4, array[3]);
        pst.setInt(5, array[4]);
        pst.setInt(6, array[5]);
        pst.setInt(7, array[6]);
        pst.setInt(8, array[7]);
        pst.setInt(9, array[8]);
        pst.setString(10, String.valueOf(letter[guess]));
        pst.setString(11, String.valueOf(answer));
        pst.setInt(12, value);

        pst.executeUpdate();

这是我的数据库: enter image description here

我觉得我错过了一些非常简单的事情。 。

任何帮助都将受到高度赞赏! 谢谢!

1 个答案:

答案 0 :(得分:2)

您有语法问题。以下是MySql documentation所说的内容:

  

标识符可以以数字开头,但除非引用可能不仅仅由数字组成。

所以你可能需要引用你的字段名称:

fs.open('myfile', 'wx', (err, fd) => {
  if (err) {
    if (err.code === 'EEXIST') {
      console.error('myfile already exists');
      return;
    }

    throw err;
  }

  writeMyData(fd);
 });

您需要确定String query = "INSERT INTO block (\"1\", \"2\", \"3\", \"4\", \"5\" , \"6\", \"7\", \"8\", \"9\", \"guess\", \"answer\", \"value\")" + " VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)"; guessanswer字段的区分大小写是否适用。