Как решить эту проблему "не используя метод PreparedStatement"? - PullRequest
0 голосов
/ 06 апреля 2019

Это раздел запроса

@FXML
    void dbsave(ActionEvent event) throws SQLException {

        String user = parUsertxt.getText();
        String first = parFirstNametxt.getText();
        String last = parLastNametxt.getText();
        String cnic = parCnictxt.getText();
        String date = parDatetxt.getValue().format(DateTimeFormatter.ofPattern("yyyy-MM-dd"));
        String address = parAddresstxt.getText();
        String status = parStatustxt.getText();
        String province = parProvincetxt.getText();
        String district = parDistricttxt.getText();
        String tehsil = parTehsiltxt.getText();
        String area = parAreatxt.getText();
        String phone = parPhonetxt.getText();
        String ephone = parEmPhonetxt.getText();
        String gender = parGendertxt.getSelectionModel().getSelectedItem();
        String father = parFatherNametxt.getText();
        String fathercnic = parFatherCNICtxt.getText();
       // BinaryStreamValueFactory personimage;// how can i use this to store an image

        String query = "INSERT INTO `landrecord`.`parowner` (`UserName`, `FirstName`, `LastName`, `CNIC`, `DateOfBirth`, `Address`, `Status`, `Province`, `Tehsil`, `District`, `Area`, `PhoneNo`, `EmergencyPhoneNo`, `Gender`, `FatherName`, `FatherCNIC`,'ImagePerson') " +
                "VALUES ('" + user + "','" + first + "','" + last + "','" + cnic + "','" + date + "','" + address + "','" + status + "','" + province + "','" + tehsil + "','" + district + "','" + area + "','" + phone + "','" + ephone + "','" + gender + "','" + father + "','" + fathercnic + "')";

        if (connectionClass.execAction(query)) {
            System.out.println("Data Successful Save");
            savebtn.getScene().getWindow().hide();
            try {
                Parent root = FXMLLoader.load(getClass().getResource("parLandRecord.fxml"));
                Stage stage = new Stage();
                Scene scene = new Scene(root);
                stage.setScene(scene);
                stage.show();

            } catch (IOException ex) {
                System.out.print(ex.getLocalizedMessage());
            }
        }else{
            System.out.println("Insertion Failed.");
        }
    }

Это кнопка для отображения изображения в режиме просмотра изображения

   @FXML
    void personCnicbtn(ActionEvent event) throws MalformedURLException {

        fileChooser1 = new FileChooser();
        fileChooser1.getExtensionFilters().addAll(new FileChooser.ExtensionFilter("Select Image","*.png","*.jpg","*.gif"));
        File file1 = fileChooser1.showOpenDialog(null);
        if (file1 != null){
            imageFile1 = file1.toURI().toURL().toString();

            Image image1 = new Image(imageFile1);
            personCnicImage.setImage(image1);

        }else{
            System.out.println("image Error");

        }    
    }

это код, над которым я работаю. Теперь мне нужно сохранить изображение без использования readyStatement. Или, если есть способ использовать readyStatement, скажите, пожалуйста, как?

1 Ответ

1 голос
/ 06 апреля 2019

Если вы храните файл в базе данных, я рекомендую хранить в формате blob. Это хорошо для обработки. Здесь в коде я просто даю информацию в вашем коде, как хранить с использованием подготовленного оператора.

Connection connection = null;
PreparedStatement statement = null;
FileInputStream inputStream = null;
File image = new File("your_file_path_which_is_getting_from_FileChooser");
inputStream = new FileInputStream(image);
        /**
         * establish connection of database.
         */
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_db", "your_username", "your_pw");
statement = connection.prepareStatement("insert into parowner(UserName,FirstName,LastName,CNIC,DateOfBirth,Address,Status,Province,Tehsil,District,Area,PhoneNo,EmergencyPhoneNo,Gender,FatherName,FatherCNIC,ImagePerson) " + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
 statement.setString(1, "UserName");
        /**
         * set image as byte stream
         */
  statement.setBinaryStream(17, (InputStream) inputStream, (int)(image.length()));
        statement.executeUpdate();
...