Hallo Community,
ich bin gerade dabei, eine Oberfläche für eine Datenbank zu programmieren, welche verschiedene Datentypen beinhalten soll. Es soll "text" und "bytea" gespeichert werden. Das bytea brauche ich, um PDF Dateien zu speichern. Wie sinnvoll das ist, sei jetzt mal dahingestellt. Ich habe eine Eingabemaske für die einzelnen Daten, sowie einen FileChooser, mit dem man die PDF auswählen soll. Dann soll mit einem Button ein prepared Statement abgesetzt werden. Im Moment ist es so, dass ich einfach nur die File Location als String abspeichere, aber das soll geändert werden. Ist es denn überhaupt möglich, bytea mit den Strings zu senden? Und wenn ja, würde ich mich sehr über Tipps und/oder die Anpassung meines Quelltextes freuen. Wie man merkt bin ich noch ein Anfänger und hoffe, dass ich in dem Thread hier richtig bin.
So sieht mein FileChooser aus. Die File Location wird als String gespeichert. Falls keine PDF verfügbar ist, wird der String "Keine PDF verfügbar" an die Datenbank geschickt und dann später in meiner Oberfläche anstatt der File Location angezeigt, wie man bei "addData" sieht.
Ich lese dann die Daten aus den Textfeldern aus und übergebe sie an die Klasse, welche das Statement absetzt.
Danach kommt dann das Statement woran es bei mir hakt. Ich weiß nicht, wie ich die PDF in die Spalte als bytea eingefügt bekomme. Aktuell sieht das Statement noch so (siehe unten) aus.
Ich bedanke mich jetzt schonmal für die Hilfe! Anbei ist noch ein Bild der Anwendung, damit man sich das etwas leichter vorstellen kann, was ich vorhabe
ich bin gerade dabei, eine Oberfläche für eine Datenbank zu programmieren, welche verschiedene Datentypen beinhalten soll. Es soll "text" und "bytea" gespeichert werden. Das bytea brauche ich, um PDF Dateien zu speichern. Wie sinnvoll das ist, sei jetzt mal dahingestellt. Ich habe eine Eingabemaske für die einzelnen Daten, sowie einen FileChooser, mit dem man die PDF auswählen soll. Dann soll mit einem Button ein prepared Statement abgesetzt werden. Im Moment ist es so, dass ich einfach nur die File Location als String abspeichere, aber das soll geändert werden. Ist es denn überhaupt möglich, bytea mit den Strings zu senden? Und wenn ja, würde ich mich sehr über Tipps und/oder die Anpassung meines Quelltextes freuen. Wie man merkt bin ich noch ein Anfänger und hoffe, dass ich in dem Thread hier richtig bin.
So sieht mein FileChooser aus. Die File Location wird als String gespeichert. Falls keine PDF verfügbar ist, wird der String "Keine PDF verfügbar" an die Datenbank geschickt und dann später in meiner Oberfläche anstatt der File Location angezeigt, wie man bei "addData" sieht.
Java:
@FXML
private void actionChooseFile(ActionEvent event)
{
fileChooser = new FileChooser();
// title of fileChooser
fileChooser.setTitle("PDF wählen...");
// set the initialDirectory for FileChooser
fileChooser.setInitialDirectory(new File(System.getProperty("user.home") + System.getProperty("file.separator") + "Desktop"));
//only able to choose pdf files
fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("PDF (*.pdf)", "*.PDF"));
//open FileChooser
File pdf = fileChooser.showOpenDialog(dataTable.getScene().getWindow());
if (pdf != null)
{
Data.setFile(pdf.toString());
System.out.println(pdf);
}
else
{
//do nothing
}
}
Ich lese dann die Daten aus den Textfeldern aus und übergebe sie an die Klasse, welche das Statement absetzt.
Java:
@FXML
private void addData(ActionEvent event)
{
if (Data.getFile() == null)
{
Data.setFile("Keine PDF verfügbar");
}
else
{
//do nothing
}
try
{
DataDAO.insertData(textKunde.getText(), textLand.getText(), textWerkort.getText(), textGeraet.getText(), Integer.parseInt(textSeriennummer.getText()), Data.getPasswortHash(), Data.getFile());
System.out.println("Daten hinzugefügt\n");
}
...
}
Danach kommt dann das Statement woran es bei mir hakt. Ich weiß nicht, wie ich die PDF in die Spalte als bytea eingefügt bekomme. Aktuell sieht das Statement noch so (siehe unten) aus.
Java:
public static void insertData(String kunde, String land, String werkort, String geraet, Integer seriennummer, String passwort, String pdf) throws SQLException, ClassNotFoundException
{
//Declare a INSERT statement
String updateStmt
= " INSERT INTO maschinenliste\n"
+ " (kunde, land, werkort, geraet, seriennummer, passwort, pdf)\n"
+ " VALUES\n"
+ " ('" + kunde + "', '" + land + "', '" + werkort + "', '" + geraet + "', '" + seriennummer + "', '" + passwort + "', '" + pdf + "');\n";
//Execute INSERT operation
try
{
DBUtil.dbExecuteUpdate(updateStmt);
System.out.println(updateStmt);
}
catch (SQLException e)
{
System.out.print("Fehler: " + e);
throw e;
}
}
Ich bedanke mich jetzt schonmal für die Hilfe! Anbei ist noch ein Bild der Anwendung, damit man sich das etwas leichter vorstellen kann, was ich vorhabe