【问题标题】:Error in your MySQL SQL syntax [closed]MySQL SQL 语法错误[关闭]
【发布时间】:2015-05-09 10:58:27
【问题描述】:

我正在尝试在我的 MySQL 数据库中插入一条记录,该记录应插入到表 medication_profile 中,但我收到以下错误消息:

线程“main”中的异常 com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便在附近使用正确的语法 '药物类型,糖尿病ID,时间_一天,剂量)值('注射',2,1,'18')' 在第 1 行

我在java中用来插入这条记录的代码如下:

PreparedStatement addMedicationStm = con.prepareStatement("INSERT INTO medication_profile"
            + ", medication_type, diabetic_id, times_a_day, dose) "
            + "VALUES (?,?,?,?))", Statement.RETURN_GENERATED_KEYS);
    addMedicationStm.setString(1, medication.getMedicationType());
    addMedicationStm.setInt(2, medication.getDiabeticID());
    addMedicationStm.setInt(3, medication.getTimesPerDay());
    addMedicationStm.setString(4, medication.getDose());
    addMedicationStm.executeUpdate();

    ResultSet rs = addMedicationStm.getGeneratedKeys();

    if (rs != null && rs.next()) {
        medication.setDiabeticID(rs.getInt(1));
        addMedicationStm.close();
        con.close();
    }

我找不到错误在哪里,因为我看到插入语法是正确的

有什么建议吗?

提前致谢

【问题讨论】:

  • 您的 MySQL 查询中有一些错字。没有左括号。在将代码复制粘贴到 StackOverflow 之前,请仔细查看代码。
  • 我相信你在medication_profile 之后缺少一个开头(,而且你在SQL 语句的末尾也有太多)
  • 你准备好的声明是INSERT INTO medication_profile, medication_type, diabetic_id, times_a_day, dose) VALUES (?,?,?,?))。而你真的没有看到错误?
  • @TagirValeev 在这种情况下,请将问题标记为离题。很快你就可以投票赞成关闭。

标签: java mysql sql jdbc prepared-statement


【解决方案1】:

您的字符串查询被连接到:

插入到 drug_profile、drug_type、diabetic_id、times_a_day、dose) VALUES (?,?,?,?)

应该是这样的

插入medication_profile(medication_type,diabetic_id,times_a_day,dose)值(?,?,?,?)

【讨论】:

    【解决方案2】:

    去掉表名后的逗号,加上(

    PreparedStatement addMedicationStm = con.prepareStatement("INSERT INTO medication_profile"
            + "(medication_type, diabetic_id, times_a_day, dose) "
    

    【讨论】:

      【解决方案3】:

      你的 sql 语法在这里是错误的:

      PreparedStatement addMedicationStm = con.prepareStatement("INSERT INTO medication_profile"
              + ", medication_type, diabetic_id, times_a_day, dose) "
              + "VALUES (?,?,?,?))", Statement.RETURN_GENERATED_KEYS);
      

      语法应该是这样的:

       PreparedStatement addMedicationStm = con.prepareStatement("INSERT INTO "
             + "yourtableName "
             + "(column1Name, column2Name,...) " 
             + "VALUES (?,?,...)", Statement.RETURN_GENERATED_KEYS);
      

      【讨论】:

        【解决方案4】:

        你放错了括号和逗号:

        PreparedStatement addMedicationStm = 
            con.prepareStatement
                ("INSERT INTO medication_profile"
                    + "(medication_type, diabetic_id, times_a_day, dose) "
                    + "VALUES (?,?,?,?)";
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2012-08-05
          • 1970-01-01
          • 2014-01-12
          • 2014-12-02
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多