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