Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie speichere ich generierte PDF-Dateien mit Java in einer MySQL-Datenbank?

  1. Datentyp, den Sie verwenden können, ist BLOB .
  2. Konvertieren Sie die PDF-Datei und behalten Sie das byte[] bei Array in der Datenbank.

    private byte[] getByteArrayFromFile(final Document handledDocument) throws IOException {
        final ByteArrayOutputStream baos = new ByteArrayOutputStream();
        final InputStream in = new FileInputStream(handledDocument);
        final byte[] buffer = new byte[500];
    
        int read = -1;
        while ((read = in.read(buffer)) > 0) {
            baos.write(buffer, 0, read);
        }
        in.close();
    
        return baos.toByteArray();
    }
    
  3. So fügen Sie sie in die DB ein Wenn Sie ORM-Tools verwenden, müssen Sie die Spalte nur als Blob abbilden, und das Tool erledigt dies für Sie. Falls Sie es nicht verwenden, können Sie eine vorbereitete Anweisung erstellen. Statement hat eine Methode namens setBlob(), die nützlich sein wird. Betrachten Sie das folgende Beispiel und erstellen Sie eine normale Einfügeabfrage mit einer Blob-Spalte.

    String sql = "INSERT INTO testtable(stringcolumn, blobcolumn) VALUES(?,?)";
    
    PreparedStatement statement = conn.getConnection().prepareStatement(sql);
    statement.setLong(1, version);
    ByteArrayInputStream bais = new ByteArrayInputStream(getByteArrayFromFile(document));
    statement.setBlob(2, bais);          
    statement.execute();
    
    conn.commit();