在我的java代码中不断出现mysql语法错误?

在我的java代码中不断出现mysql语法错误?,java,mysql,database,jdbc,syntax-error,Java,Mysql,Database,Jdbc,Syntax Error,我正在开发一个电子邮件数据库程序,当我试图将电子邮件存储到数据库中时,我仍然会遇到一个语法错误,我不确定为什么会发生这种情况。我以完全相同的方式存储用户对象,虽然它确实将用户对象存储到数据库中,但当我退出程序并再次测试程序时,它最终更新了数据库中的一些值,而不是插入新值。语法错误可能是因为我的某些列存储blob吗 MYSQL: 'CREATE TABLE `item` (\n `Id` int(10) unsigned NOT NULL DEFAULT \'0\',\n `To`

我正在开发一个电子邮件数据库程序,当我试图将电子邮件存储到数据库中时,我仍然会遇到一个语法错误,我不确定为什么会发生这种情况。我以完全相同的方式存储用户对象,虽然它确实将用户对象存储到数据库中,但当我退出程序并再次测试程序时,它最终更新了数据库中的一些值,而不是插入新值。语法错误可能是因为我的某些列存储blob吗

MYSQL:

 'CREATE TABLE `item` (\n  `Id` int(10) unsigned NOT NULL DEFAULT \'0\',\n  `To`               varchar(300) NOT NULL COMMENT \'To\',\n  `From` varchar(300) NOT NULL,\n  `Subject` varchar(45) NOT NULL COMMENT \'subject\',\n  `topic` varchar(45) NOT NULL COMMENT \'category\',\n  `Email_Content` blob NOT NULL COMMENT \'Email Content may change\',\n  `Comments` blob,\n  `Attachments` blob,\n  PRIMARY KEY (`Id`)\n) ENGINE=InnoDB DEFAULT    CHARSET=utf8'
数据库类:

public void storeItem() throws SQLException{
    String checkSql = "select count(*) as count from item where Id=?";
    PreparedStatement checkStatement = con.prepareStatement(checkSql);

    String storeSql = "insert into item(Id, To, From, Subject, topic, Email_Content, Comments, Attachments) values(?,?,?,?,?,?,?,?)";
    PreparedStatement insertStatement = con.prepareStatement(storeSql);

    String updateSql = "insert into set To=? From=?, Subject=?, topic=?, Email_Address=?, Comments=?, Attachments=? where Id=?";
    PreparedStatement updateStatement = con.prepareStatement(updateSql);

    for(Item items: Items){
        int ItemId = items.getId();
        String To = items.getTo();
        String From = items.getFrom();
        String Subject = items.getSubject();
        String Topic = items.getTopic();
        String Email = items.getMessageContent();
        String Comments = items.getComments();
        String attachments = items.getAttachments();

        checkStatement.setInt(1, ItemId);
        ResultSet checkResult = checkStatement.executeQuery();
        checkResult.next();
        int count = checkResult.getInt(1);

        if (count == 0) {
            System.out.println("Inserting person with ID " + ItemId);
            int col = 1;
            insertStatement.setInt(col++, ItemId);
            insertStatement.setString(col++, To);
            insertStatement.setString(col++, From);
            insertStatement.setString(col++, Subject);
            insertStatement.setString(col++, Topic);
            insertStatement.setString(col++, Email);
            insertStatement.setString(col++, Comments);
            insertStatement.setString(col++, attachments);
            insertStatement.executeUpdate();

        } else {
            System.out.println("Updating person with ID " + ItemId);
            int col = 1;
            updateStatement.setString(col++, To);
            updateStatement.setString(col++, From);
            updateStatement.setString(col++, Subject);
            updateStatement.setString(col++, Topic);
            updateStatement.setString(col++, Email);
            updateStatement.setString(col++, Comments);
            updateStatement.setString(col++, attachments);
            updateStatement.setInt(col++, ItemId);

            updateStatement.executeUpdate();
        }

         System.out.println("Count for person with ID " + ItemId + " is " + count);
    }
    updateStatement.close();
    insertStatement.close();
    checkStatement.close();


}
控制器类

    public void storeItem() throws SQLException{
    dc.storeItem();
}
大型机类

public void completeEventOccurred() {
            if (LoadEmailPanel.getComplete() == true) {
                String To = LoadEmailPanel.getText(1);
                String From = LoadEmailPanel.getText(2);
                String Subject = LoadEmailPanel.getText(3);
                String Topic = LoadEmailPanel.getText(4);
                String Email = LoadEmailPanel.getText(5);
                String Notes = LoadEmailPanel.getText(6);
                String Attach = LoadEmailPanel.getText(7);

                EmailEvent ev = new EmailEvent(this, To, From, Subject,
                        Topic, Email, Notes, Attach);
                controller.addEmail(ev);
                connect();
                try {
                    controller.storeItem();
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }



                cards.show(MainFrame.this.getContentPane(), "Home");
            }
        }

    });
这将帮助您在查询中查找语法错误 在查询中使用单引号和双引号的组合


insertQuery=插入TableNameName、EnrollmentNo、Countryvalues+'+Mack'、+12103596'+India+'

错误消息是什么?这是堆栈跟踪给我的。com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL语法有错误;查看与您的MySQL服务器对应的手册,了解使用“to”、“From”、“Subject”、“topic”、“Email\u Content”、“Comments”、“Attachments values”1、“abhila”在第1行的正确语法to是@Kerpal:MySQL中有保留字。当使用as column或table namesupdate语句不正确,应该是update item set,而不是insert into set时,您需要使用反勾号对其进行转义。建议的解决方案易受SQL注入的影响。我发现我的程序存在语法错误。这只是保留字和我的update语句错误。谢谢你的意见。
JOptionPane.showMessageDialog(null,query);