我想保存图像文件到我的localhost mysql数据库。已在personaldetails表中创建图像(blob)列。
在屏幕截图中,当我点击“保存”按钮时,所有的值都会正确地进入数据库,但我不能为图像这样做。我尝试了很多方法,但都不能成功。这是所有页面代码。数据和mysql之间还有其他连接代码。我怎样才能做到?
package sample.controllerPart;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;import javafx.fxml.Initializable;import javafx.scene.Parent;
import javafx.scene.control.*;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.input.MouseEvent;import javafx.scene.text.Text;
import javafx.stage.FileChooser;
import javafx.stage.StageStyle;import sample.helpers.plus;
import java.io.File;
import java.io.FileInputStream;
import java.net.URL;
import java.io.IOException;
import java.sql.*;
import java.util.ResourceBundle;
public class developersController implements Initializable {
FileInputStream fis;
@FXML private TextField nameField; @FXML private TextField familyNameField; @FXML private DatePicker dateOfBirthField; @FXML private TextField genderField; @FXML private TextField nationField; @FXML private TextField civilStatusField; @FXML private TextField profileCodeField;
@FXML private TextField workProgramming; @FXML private TextField workWebDesign; @FXML private TextField workOperatingSys; @FXML private TextField workDatabaseMng; @FXML private TextField workGraphicDesign; @FXML private TextField workPcHardware; @FXML private TextField workOther;
@FXML private TextField oPosition; @FXML private TextField oPhone; @FXML private TextField oMail; @FXML private TextField oGithub; @FXML private DatePicker oAdmissionDate; @FXML private TextField oLocation; @FXML private TextField oSalary;
@FXML private Text personalText; @FXML private Text personalText2; @FXML private Text personalText3; @FXML private Text personalText4; @FXML private Text personalText5; @FXML private Text personalText6; @FXML private Text personalText7;
@FXML private Text workText; @FXML private Text workText2; @FXML private Text workText3; @FXML private Text workText4; @FXML private Text workText5; @FXML private Text workText6; @FXML private Text workText7; @FXML private Text otherDetailText; @FXML private Text otherDetailText2; @FXML private Text otherDetailText3; @FXML private Text otherDetailText4; @FXML private Text otherDetailText5; @FXML private Text otherDetailText6; @FXML private Text otherDetailText7;
@FXML private Text listNFNText; @FXML private Text listNFNTextx; @FXML private Text listPText; @FXML private Text listPTextx; @FXML private Text listNFNText2; @FXML private Text listNFNTextx2; @FXML private Text listPText2; @FXML private Text listPTextx2; @FXML private Text listNFNText3; @FXML private Text listNFNTextx3; @FXML private Text listPText3; @FXML private Text listPTextx3; @FXML private Text listNFNText4; @FXML private Text listNFNTextx4; @FXML private Text listPText4; @FXML private Text listPTextx4; @FXML private Text listNFNText5; @FXML private Text listNFNTextx5; @FXML private Text listPText5; @FXML private Text listPTextx5; @FXML private Text listNFNText6; @FXML private Text listNFNTextx6; @FXML private Text listPText6; @FXML private Text listPTextx6;
@FXML
private ImageView imageData;
@FXML
private ImageView imageDatabase;
@FXML
private Button uPicture;
@FXML
private void uploadPhoto(ActionEvent event) {
FileChooser fc = new FileChooser();
fc.setTitle("Open File");
File selectedFile = fc.showOpenDialog(null);
String url = selectedFile.toURI().toString();
if(selectedFile != null) {
imageData.setImage(new Image(url));
imageData.maxWidth(119);
imageData.maxHeight(169);
}
}
@Override
public void initialize(URL location, ResourceBundle resources) {
}
@FXML private void add_developers(javafx.scene.input.MouseEvent mouseEvent) throws IOException {
Dialog parentDialog = new Dialog();
Parent root = plus.loadFXML("add_developers");
parentDialog.getDialogPane().setContent(root);
root.setStyle("-fx-background-color:transparent");
parentDialog.initStyle(StageStyle.TRANSPARENT);
parentDialog.show(); }
int v = 0;
@FXML private void savePersonal (MouseEvent mouseEvent) throws SQLException {
ResultSet rs = null;
PreparedStatement pst = null;
DatePicker pw;
sample.controllerPart.ConnectionClass connectionClass = new sample.controllerPart.ConnectionClass();
Connection connection = connectionClass.getConnection();
String sql = "INSERT INTO PERSONALDETAILS" +
"(Name, familyName, dateOfBirth,gender, nation, civilStatus, profileCode, programmingExp, webDesignExp, operatingSysExp, databaseMngExp, graphicDesignExp, pcHardwareExp, otherExp, position, phone, mail, github, admissionDate, location, salary) " +
"VALUES('"+nameField.getText()+"', '"+familyNameField.getText()+"', '"+dateOfBirthField.getValue()+"'," + " '"+genderField.getText()+"', '"+nationField.getText()+"', '"+civilStatusField.getText()+"', '"+profileCodeField.getText()+"', '" +workProgramming.getText()+"','"+workWebDesign.getText()+"','"+workOperatingSys.getText()+"','"+workDatabaseMng.getText()+"', '"+workGraphicDesign.getText()+"', '"+workPcHardware.getText()+"','"+workOther.getText()+"', '" +oPosition.getText()+"','"+oPhone.getText()+"','"+oMail.getText()+"','"+oGithub.getText()+"','"+oAdmissionDate.getValue()+"','"+oLocation.getText()+"','"+oSalary.getText()+"')";
Statement statement = connection.createStatement();
statement.executeUpdate(sql);
String query = "SELECT * FROM PERSONALDETAILS where name = ?";
pst = connection.prepareStatement(query);
pst.setString(1, (String) nameField.getText());
rs = pst.executeQuery();
int x = 0;
while(rs.next()){
personalText.setText(rs.getString("name"));
personalText2.setText(rs.getString("familyName"));
personalText3.setText(rs.getString("dateOfBirth"));
personalText4.setText(rs.getString("gender"));
personalText5.setText(rs.getString("nation"));
personalText6.setText(rs.getString("civilStatus"));
personalText7.setText(rs.getString("profileCode"));
workText.setText(rs.getString("programmingExp"));
workText2.setText(rs.getString("webDesignExp"));
workText3.setText(rs.getString("operatingSysExp"));
workText4.setText(rs.getString("databaseMngExp"));
workText5.setText(rs.getString("graphicDesignExp"));
workText6.setText(rs.getString("pcHardwareExp"));
workText7.setText(rs.getString("otherExp"));
otherDetailText.setText(rs.getString("position"));
otherDetailText2.setText(rs.getString("phone"));
otherDetailText3.setText(rs.getString("mail"));
otherDetailText4.setText(rs.getString("github"));
otherDetailText5.setText(rs.getString("admissionDate"));
otherDetailText6.setText(rs.getString("location"));
otherDetailText7.setText(rs.getString("salary"));
}
pst.close();
rs.close();
if (v == 0) {
listNFNText.setText(personalText.getText());
listNFNTextx.setText(personalText2.getText());
listPText.setText(otherDetailText.getText());
listPTextx.setText(personalText7.getText());
v = 1;
}
else if (v == 1) {
listNFNText2.setText(personalText.getText());
listNFNTextx2.setText(personalText2.getText());
listPText2.setText(otherDetailText.getText());
listPTextx2.setText(personalText7.getText());
v = 2;
}
else if (v == 2) {
listNFNText3.setText(personalText.getText());
listNFNTextx3.setText(personalText2.getText());
listPText3.setText(otherDetailText.getText());
listPTextx3.setText(personalText7.getText());
v = 3;
}
else if (v == 3) {
listNFNText4.setText(personalText.getText());
listNFNTextx4.setText(personalText2.getText());
listPText4.setText(otherDetailText.getText());
listPTextx4.setText(personalText7.getText());
v = 4;
}
else if (v == 4) {
listNFNText5.setText(personalText.getText());
listNFNTextx5.setText(personalText2.getText());
listPText5.setText(otherDetailText.getText());
listPTextx5.setText(personalText7.getText());
v = 5;
}
else if (v == 5) {
listNFNText6.setText(personalText.getText());
listNFNTextx6.setText(personalText2.getText());
listPText6.setText(otherDetailText.getText());
listPTextx6.setText(personalText7.getText());
v = 0;
}
}}
1条答案
按热度按时间ulydmbyx1#
使用
SwingFXUtils
转换为BufferedImage
使用ImageIO
将数据保存到ByteArrayOutputStream
. 一Blob
从生成的byte[]
与一起使用的数组PreparedStatement
将数据插入数据库。