我正在开发一个电子邮件数据库程序,当我尝试将电子邮件存储到数据库中时,我仍然遇到语法错误,而且我不确定它为什么会发生。我以完全相同的方式存储用户对象,虽然它确实将用户对象存储到数据库中,但它最终更新了我的数据库中的某些值,而不是在退出程序并再次测试程序时插入新值。语法错误可能来自我的一些列存储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");
}
}
});
答案 0 :(得分:-1)
JOptionPane.showMessageDialog(null,query);
这将帮助您在查询中找到语法错误 在查询中使用单引号和双引号组合
insertQuery =“Insert Into TableName(Name,EnrollmentNo,Country)值(”+“'”+ Mack“',”+ 12103596“,”“+ India +”')“;