我的jframe上有6个带有图像图标的标签,以及其他文本字段和日期。我在UPDATE按钮上遇到一个问题,因为在更新其他任何内容时都无法保留内容标签图标。因此,每次我运行查询时,它将所有标签图标都设置为Null。
private void jButton14actionPerformed(java.awt.event.actionEvent evt) {
try {
int row = table_booking.getSelectedRow();
String value = (table_booking.getModel().getvalueAt(row,0).toString());
String sql = "UPDATE Booking SET BookingCode=?,PatientName = ?,PatientAge = ?,LowerAbdomen = ?,UpperAbdomen = ?,"
+ " Waist = ?,Hips = ?,Arm = ?,UpperLeg = ?,BMI = ?,VisceralFat = ?,FatMass = ?,Before = ?,"
+ "Before_right=?,Before_left=?,Before_back=?,FurtherInformation = ?,Weight = ?,Rarm =?,rupperLeg =?,"
+ "Height = ?,Date = ?,LowerAbdomenResult=?,Upper_AbdomenResult=?,WaistResult=?,HipsResult=?,ArmResult=?,"
+ "RarmResult=?,UpperLagResult=?,rupperLegResult=?,BMIResult=?,VisceralFatResult=?,fmassResult=?,"
+ "WeightResult=?,DateResult=?,After = ?,After_right=?,After_left=?,After_back=? "
+ "where BookingCode="+value;
pst = conn.prepareStatement(sql);
pst.setInt(1,Integer.parseInt(text_code.getText()));
pst.setString(2,text_name.getText());
pst.setString(3,text_age.getText());
pst.setString(4,text_lowerAdomen.getText());
pst.setString(5,text_upperAbdomen.getText());
pst.setString(6,text_waist.getText());
pst.setString(7,text_hips.getText());
pst.setString(8,text_arm.getText());
pst.setString(9,text_upperLeg.getText());
pst.setString(10,text_BMI.getText());
pst.setString(11,text_visceralFat.getText());
pst.setString(12,text_fatMass.getText());
pst.setBytes(13,BeforePhoto);
pst.setBytes(14,BeforePhotoRight);
pst.setBytes(15,BeforePhotoLeft);
pst.setBytes(16,BeforePhotoBack);
pst.setString(17,text_furtherInformation.getText());
pst.setString(18,text_weight.getText());
pst.setString(19,text_Rarm.getText());
pst.setString(20,text_rupperLeg.getText());
pst.setString(21,text_height.getText());
pst.setString(22,((JTextField)text_date.getDateEditor().getUiComponent()).getText());
pst.setString(23,text_lowerAbdomenResult.getText());
pst.setString(24,text_upperAbdomenResult.getText());
pst.setString(25,text_waistResult.getText());
pst.setString(26,text_hipsResult.getText());
pst.setString(27,text_armResult.getText());
pst.setString(28,text_RarmResult.getText());
pst.setString(29,text_upperLegResult.getText());
pst.setString(30,text_rupperLegResult.getText());
pst.setString(31,text_BMIResult.getText());
pst.setString(32,text_visceralFatResult.getText());
pst.setString(33,text_fatMassResult.getText());
pst.setString(34,text_weightResult.getText());
pst.setString(35,((JTextField)text_dateResult.getDateEditor().getUiComponent()).getText());
pst.setBytes(36,AfterPhoto);
pst.setBytes(37,AfterPhotoRight);
pst.setBytes(38,AfterPhotoLeft);
pst.setBytes(39,AfterPhotoBack);
pst.executeUpdate();
//pst.execute();
JOptionPane.showmessagedialog(null,"Updated");
}catch (Exception e) {
JOptionPane.showmessagedialog(null,e);
//e.printStackTrace();
} finally {
try {
rs.close();
pst.close();
} catch(Exception e) {
}
}
Update_Table();
FieldsCleaner();
}
我只需要像其他文本字段一样知道如何获取我的jlabel图标的内容,因此我可以在运行更新查询时保留它,因为当然,字节数组BeforePhoto,BeforePhotoRight,BeforePhotoLeft,BeforePhotoBack都会全部在我运行更新查询时为null。
这是我的JFileChooser函数:
private void cmd_insertBeforeactionPerformed(java.awt.event.actionEvent evt) {
JFileChooser chooser = new JFileChooser();
chooser.showOpenDialog(null);
File f = chooser.getSelectedFile();
filename = f.getabsolutePath();
try {
File image = new File(filename);
FileInputStream fis = new FileInputStream(image);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] buf = new byte[1024];
for(int readNum; (readNum=fis.read(buf))!=-1;){
bos.write(buf,readNum);
}
BeforePhoto = bos.toByteArray();
ImageIcon imageIcon = new ImageIcon(new ImageIcon(filename).getImage().getScaledInstance(label_before.getWidth(),label_before.getHeight(),Image.SCALE_SMOOTH));
label_before.setIcon(imageIcon);
} catch (Exception e) {
JOptionPane.showmessagedialog(null,e);
e.printStackTrace();
} finally {
try {
rs.close();
pst.close();
} catch(Exception e) {
}
}
}
这是我的救助功能
private void jButton6actionPerformed(java.awt.event.actionEvent evt) {
try {
String sql = "insert into Booking (BookingCode,PatientName,PatientAge,LowerAbdomen,UpperAbdomen,Waist,Hips,"
+ "Arm,UpperLeg,BMI,VisceralFat,FatMass,Before,Before_right,Before_left,Before_back,FurtherInformation,"
+ "Weight,Rarm,rupperLeg,Height,Date,LowerAbdomenResult,Upper_AbdomenResult,WaistResult,HipsResult,"
+ "ArmResult,RarmResult,UpperLagResult,rupperLegResult,BMIResult,VisceralFatResult,fmassResult,"
+ "WeightResult,DateResult,After,After_right,After_left,After_back) "
+ "values (?,?,?)";
pst = conn.prepareStatement(sql);
pst.setInt(1,text_fatMass.getText());
pst.setBytes(13,BeforePhoto);
pst.setBytes(14,text_weightResult.getText());
if(text_dateResult.getDate() == null){
pst.setString(35,((JTextField)text_date.getDateEditor().getUiComponent()).getText());
} else {
pst.setString(35,((JTextField)text_dateResult.getDateEditor().getUiComponent()).getText());
}
pst.setBytes(36,AfterPhotoBack);
pst.execute();
JOptionPane.showmessagedialog(null,"Saved");
}catch (Exception e) {
JOptionPane.showmessagedialog(null,e);
} finally {
try {
rs.close();
pst.close();
} catch(Exception e) {
}
}
Update_Table();
FieldsCleaner();
}