如何使用Java更新Sql数据库

如何使用Java更新Sql数据库,java,Java,单击“提交”按钮时,如何使用文本字段中的数据更新sql数据库。到目前为止,我已经编写了这段代码,但是当我单击submit时,似乎什么都没有发生,但是当单击reset按钮时,它会工作 public void actionPerformed(ActionEvent e) { String action = e.getActionCommand(); if(action.equals("Reset")){ title.setSelectedIndex(0);

单击“提交”按钮时,如何使用文本字段中的数据更新sql数据库。到目前为止,我已经编写了这段代码,但是当我单击submit时,似乎什么都没有发生,但是当单击reset按钮时,它会工作

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

    }

请帮忙,谢谢

基本上,您可以使用当前查询
String

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

        }
实际上是要求数据库插入您提供的文本,而不是文本字段中的文本,事实上,数据库应该非常适合这种情况,并抛出一个
异常
。充其量,它试图找到与
姓氏.getText
等匹配的表/列值;充其量,它寻找的是名为
forename.getText()的函数

首先看一下:

例如

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

您可能会发现有用的…

您没有发送
名字
姓氏
等的值,而是发送字符串 用于在java中调用这些值。您需要使用以下命令来修改代码的该部分:-

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

您当前的“查询”应引发异常-定义“但当我单击提交时似乎什么也没有发生”当我单击提交时,表单保持不变,没有任何更改,数据库没有更新。假设控制台没有打印异常,并且没有显示
“插入成功!”
,您的
actionCommand
可能是错误的。首先添加一些调试语句来跟踪代码的流程(打印要开始的
actionCommand
,以及一些关于您在代码中的位置的消息),如果这似乎没有帮助,请添加断点并开始调试代码……感谢您的帮助,但我只想说最后一行+postcode.getText()");xt,contactNo.getText(),houseNo.getText(),postcode.getText())"); 给了我一个错误,对不起。我错误地没有在匆忙中标记它。在尝试了这个答案后,我得到了一个com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:在“字段列表”中未知列“alex”,当我运行代码并在名称textfield中输入alex以调试代码时,请在执行之前写下以下行并检查输出:
System.out.println(“在患者(姓名、姓氏、出生日期、电话号码、门牌号、邮政编码)中插入值(“+ForeName.getText()+”、“+names.getText()+”、“+age.getText()+”、“+contactNo.getText()+”、“+houseNo.getText()+”、“+PostCode.getText()+”)
我想说的是,如果MadProgrammer的答案起作用,那么这也会起作用。您可能犯了其他错误。这会触发消息,但当您可能已关闭自动提交时,数据库不会更新。请尝试在
executeUpdate
语句后添加
con.commit()
bil.execute("INSERT INTO Patient (ForeName, SurName, DateOfBirth, PhoneNumber, HouseNumber, PostCode) VALUES ("'
    + forename.getText() + "', '"
    + surname.getText() + "', '"
    + age.getText() + "', '"
    + contactNo.getText() + "', '"
    + houseNo.getText() + "', '"
    + postcode.getText() + "')");