2014-12-02 80 views
1
public void actionPerformed(ActionEvent e) { 
    String action = e.getActionCommand(); 
    if(action.equals("Reset")){ 
     title.setSelectedIndex(0); 
     forename.setText(null); 
     surname.setText(null); 
     age.setText(null); 
     contactNo.setText(null); 
     houseNo.setText(null); 
     streetName.setText(null); 
     districtName.setText(null); 
     cityName.setText(null); 
     postcode.setText(null); 
     healthPlan.setSelectedIndex(0); 
     treatment.setSelectedIndex(0); 

    } 

当我单击“提交”按钮时,如何使用文本字段中的数据更新我的sql数据库。我已经编写了这段代码,但是当我点击提交时似乎没有发生任何事情,但重置按钮在点击时工作。如何使用Java更新我的Sql数据库

if(action.equals("Submit")){ 
     Connection con = null; 
     String db="jdbc:mysql://stusql.dcs.shef.ac.uk/team009?user=team009&password=********"; 

     try { 

      con = DriverManager.getConnection(db); 
      Statement bil = con.createStatement(); 

      bil.execute("INSERT INTO Patient (ForeName, SurName, DateOfBirth, PhoneNumber, HouseNumber, PostCode) " + 
      "VALUES (forename.getText(),surname.getText,age.getText,contactNo.getText(),houseNo.getText(),postcode.getText())"); 

      JOptionPane.showMessageDialog(null,"Inserted Successfully!"); 

     } 
     catch (SQLException ex) { 
     ex.printStackTrace(); 
     } 
     finally { 
     if (con != null) 
      try { 
       con.close(); 
      } catch (SQLException e1) { 

       e1.printStackTrace(); 
      } 

     } 

请任何帮助,将不胜感激谢谢。

+0

您当前的“查询”应该抛出一个异常 - 定义*“但似乎没有当我点击提交要发生的事情” * – MadProgrammer 2014-12-02 23:46:37

+0

当我点击提交表单保持不变,数据库不更新。 – theBean 2014-12-02 23:48:45

+0

假设没有任何异常被打印到控制台,并且“Inserted Successfully!”没有被显示,那么'actionCommand'可能是错误的。首先添加一些调试语句来跟踪代码中的流程(打印'actionCommand'开始,并提供一些关于代码中的位置的消息),如果这似乎没有帮助,则添加断点并开始调试代码... – MadProgrammer 2014-12-02 23:51:19

回答

1

基本上,你现在查询String

"INSERT INTO Patient (ForeName, SurName, DateOfBirth, PhoneNumber, HouseNumber, PostCode) " + 
     "VALUES (forename.getText(),surname.getText,age.getText,contactNo.getText(),houseNo.getText(),postcode.getText())" 

字面要求数据库插入您提供的文本,而不是从文本字段的文本,实际上,数据库应该非常有配合在此并扔回Exception。充其量,它试图找到表/列的值匹配之类的东西surname.getText在最坏的情况是在寻找所谓的forename.getText()

启动功能,通过在考虑看看:

例如...

try (Connection con = DriverManager.getConnection(null)) { 
    try (PreparedStatement stmt = con.prepareStatement("INSERT INTO Patient (ForeName, SurName, DateOfBirth, PhoneNumber, HouseNumber, PostCode) VALUES (?,?,?,?,?,?)")) { 
     stmt.setString(1, forename.getText()); 
     stmt.setString(2, surname.getText()); 
     stmt.setString(3, age.getText()); 
     stmt.setString(4, contactNo.getText()); 
     stmt.setString(5, houseNo.getText()); 
     stmt.setString(6, postcode.getText()); 
     // In case you care, you can get the number of rows that were updated... 
     int rowsUpdated = stmt.executeUpdate(); 
    } 
} catch (SQLException ex) { 
    Logger.getLogger(Test.class.getName()).log(Level.SEVERE, null, ex); 
} 

,你会发现The try-with-resources Statement有用...

+0

这会触发消息,但数据库未更新 – theBean 2014-12-03 01:17:52

+0

然后您可能已关闭自动提交。尝试在'executeUpdate'声明 – MadProgrammer 2014-12-03 01:23:25

0

你没有发送forenamesurname等的值,而是发送串 在Java调用这些值。你需要给你的那部分代码与此: -

​​
+0

之后添加'con.commit()'谢谢你的帮助,但我只想说最后一行+ postcode.getText())“); xt,contactNo.getText(),houseNo.getText (),postcode.getText())“);给我一个错误 – theBean 2014-12-03 00:14:27

+0

我很抱歉。我错误地没有急着标明。 – afzalex 2014-12-03 00:17:40

+0

尝试这个答案后,我得到一个com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:'字段列表'中的未知列'alex',当我运行代码并在名称文本字段中输入alex – theBean 2014-12-03 00:52:27