更新SQL查询在Java Swing中不起作用

时间:2017-04-02 12:35:14

标签: java postgresql jdbc

这里我创建了一个名为sub_master的表,其中包含列sub_id和名称,插入和删除工作完全正常,所以将这些函数放在这里以获取更新函数的参考 我正在使用PostgreSQL。 在命令行UPDATE查询工作正常,查询为: 更新school_submaster SET name =''WHERE sub_id =;

private void InsertRowActionPerformed(java.awt.event.ActionEvent evt) 
{                                          
  String query = "INSERT INTO school_submaster (sub_id, \"name\") VALUES ("+SidInput.getText()+",'"+SnameInput.getText()+"')";
  executeSQlQuery(query, "Inserted");
}                                         

private void UpdateRowActionPerformed(java.awt.event.ActionEvent evt)    
{                                          
  String query = "UPDATE school_submaster SET 'name' ='"+SnameInput.getText()+"'+WHERE sub_id = "+SidInput.getText();
  executeSQlQuery(query, "Updated");
}                                         

private void DeleteRowActionPerformed(java.awt.event.ActionEvent evt) 
{                                          
    String query = "DELETE FROM school_submaster WHERE sub_id = "+SidInput.getText();
    executeSQlQuery(query, "Deleted");
}                                         

2 个答案:

答案 0 :(得分:2)

仅对字符串和日期常量使用单引号。 从不在列名或表名周围使用单引号。

您的String phone = cursor.getString(0); phone = phone.replaceAll("+33", ""); editText.setText(phone);是:

update

在查询字符串中还有UPDATE school_submaster SET 'name' ='<something>'+WHERE sub_id = "+SidInput.getText(); 的附加问题。它应该看起来像:

+

但即便如此也是如此。您需要学习使用参数将参数传递给查询。查询应该是以下的一些变体:

UPDATE school_submaster
    SET name = '<something>'
    WHERE sub_id = "+SidInput.getText();

UPDATE school_submaster SET name = ? WHERE sub_id = ? 是参数的占位符(也可能是?或其他内容)。

答案 1 :(得分:0)

您在sql WHERE子句中缺少空格,因此请按如下所示添加:

String query = "UPDATE school_submaster SET 'name' ='"+
                 SnameInput.getText()+"'  WHERE sub_id = "+SidInput.getText();