在我的java代码中不断收到mysql语法错误?

时间:2014-07-16 13:50:23

标签: java mysql database jdbc syntax-error

我正在开发一个电子邮件数据库程序,当我尝试将电子邮件存储到数据库中时,我仍然遇到语法错误,而且我不确定它为什么会发生。我以完全相同的方式存储用户对象,虽然它确实将用户对象存储到数据库中,但它最终更新了我的数据库中的某些值,而不是在退出程序并再次测试程序时插入新值。语法错误可能来自我的一些列存储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();
}

MainFrame类

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");
            }
        }

    });

1 个答案:

答案 0 :(得分:-1)

JOptionPane.showMessageDialog(null,query);

这将帮助您在查询中找到语法错​​误 在查询中使用单引号和双引号组合

insertQuery =“Insert Into TableName(Name,EnrollmentNo,Country)值(”+“'”+ Mack“',”+ 12103596“,”“+ India +”')“;