2015-08-10 6 views
5

Ich habe viele Office Open XML-Dateien (OOXML) mit der XML-Erweiterung gespeichert und versuche, diese Dateien in eine MySQL-Datenbank einzufügen. Ich kann mich gut verbinden, und ich konnte Strings in verschiedene Datenbanken mit der gleichen Syntax einfügen. Aber wenn ich versuche, eine XML-Datei in ein Blob-Feld in der Datenbank einzufügen, sagt es mir, dass ich ein Problem mit meiner Syntax habe. Gibt es etwas Besonderes, das ich wegen des Formats der Dateien tun sollte?Einfügen einer Office Open XML-Datei (OOXML) in MySQL als Blob

public Insertion(Connection conn) throws SQLException, FileNotFoundException{ 

    System.out.println("Trying to insert Data.."); 

    String filePath1 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML"; 
    InputStream inputStream1 = new FileInputStream(new File(filePath1)); 
    String filePath2 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML"; 
    InputStream inputStream2 = new FileInputStream(new File(filePath2)); 
    String filePath3 = "C:/Users/SAVAGD05/Documents/RMP/Section1.XML"; 
    InputStream inputStream3 = new FileInputStream(new File(filePath3)); 

    System.out.println("It did this part"); 

    String SQL = "INSERT INTO (1,2,3) values(?,?,?)"; 
    PreparedStatement statement = conn.prepareStatement(SQL); 


    statement.setBlob(1, inputStream1); 
    statement.setBlob(2, inputStream2); 
    statement.setBlob(3, inputStream3); 
    statement.executeUpdate(); 


    System.out.println("Data inserted."); 
    conn.close(); 
    System.out.println("Connection Closed"); 
    System.out.println("Have a Nice Day and Goodbye."); 
    } 


} 

Dies ist der Fehler:

"Exception in thread "main"
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(1,2,3) values(_binary'PK\0\0\0\0\0!\0?RH?\0\0?\0\0\0[Content_Types].' at line 1".

Auf meiner Konsole, ein paar der 0er als ein Fragezeichen anstatt in einer Box kommen.

+1

Was Ihre Tabelle sieht wie und was zielst du? Möchten Sie wirklich drei Blobs in einem Datensatz speichern oder möchten Sie jeden Blob in einem eigenen Datensatz speichern? In jedem Fall fehlt Ihrer Abfrage ein Tabellenname: 'INSERT INTO tabellenname (col_name1, col_name2) VALUES (...), (...);' – rostbot

+0

Meine Tabelle hat die Spaltennamen "Section1", "Section2" und " Sektion 3". Ich habe gerade die Syntax aktualisiert: String SQL = "INSERT INTO (Abschnitt1, Abschnitt2, Abschnitt3) Werte (?,?,?)"; Aber das hat noch nichts an dem Fehler geändert. –

+2

Sie haben noch keinen Tabellennamen angegeben: 'String SQL =" INSERT INTO_Tabellenname_hier (Abschnitt1, Abschnitt2, Abschnitt3) Werte (?,?,?) ";' – rostbot

Antwort

3

Okay, wow, ich habe festgestellt, dass es nur ein kleiner Syntaxfehler war. Dies:

String SQL = "INSERT INTO (1,2,3) values(?,?,?)"; 

benötigt werden:

String SQL = "INSERT INTO sections(idSections,Section1,Section2,Section3) values(?,?,?,?)"; 

als ich die Tabellennamen angeben erforderlich sowie dem ID-Feld einen Wert geben.

Es gibt kein Problem mit den OOXML-Daten in einer XML-Erweiterung wie sich herausstellt, da die resultierende Abfrage in MS Word geöffnet werden kann (das ist, was ich angestrebt/wanted)