# Blob auslesen



## Angins (10. April 2006)

Hallo Zusammen,

Habe in meine SQL Datenbank ein Word Dokument in ein Blob gespeichert.
Möchte nun das Blob auslesen, das heisst, das Word Dokument soll sich gleich öffnen.

Habe keine Ahnung wie ich das anstellen kann.
Kann mir jemand helfen?

Gruss
Angins


----------



## flashray (11. April 2006)

Hallo Angins,

dazu sind drei Schritte notwendig:

1. Applet oder JSP Webseite erstellen
2. Datenbank auslesen
3. Word mit dieser Datei auf dem Clientrechner öffnen.

Fang mal an. Dann schau ma weider!

Vg Erdal


----------



## elmato (11. April 2006)

Ich Vermute mal das du ohne externe Bibliotheken nicht sehr weit kommen wirst mit dem öffnen des Word Dokuments, schau dir im Notfall mal die POI Lib von Jakarta an(googeln  )..
mfg
elmato


----------



## flashray (11. April 2006)

Hallo Elmato,

wenn er die Datei nicht unbedingt im Browser öffnen möchte, dann kann er einfach im Clientrechner Word öffnen, und die Datei übergeben. Somit wäre das zumindest umgangen.

Vg Erdal


----------



## Thomas Darimont (12. April 2006)

Hallo!

Schau mal hier:

```
/**
 * 
 */
package de.tutorials;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;

import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

/**
 * @author Tom
 * 
 */
public class BlobExtractionExample {

    /**
     * @param args
     */
    public static void main(String[] args) throws Exception {
        MysqlDataSource dataSource = new MysqlDataSource();
        dataSource.setServerName("localhost");
        dataSource.setPort(3306);
        dataSource.setUser("root");
        dataSource.setPassword("");
        dataSource.setDatabaseName("test");

        Connection con = dataSource.getConnection();

        File file = new File("c:/someWordDocument.doc");
        insertDocumentIntoDatabase(file, "file_data", "data", con);

        File out = fetchDocumentFromDatabase("file_data", "data", 1, con);

        if (out.exists()) {
            Runtime.getRuntime().exec("cmd /c " + out.getAbsoluteFile());
        }

        con.close();
    }

    private static File fetchDocumentFromDatabase(
            String tableName,
            String columnName,
            int id,
            Connection con) throws Exception {

        Statement statement = con.createStatement();
        ResultSet resultSet = statement.executeQuery("SELECT " + columnName
                + " FROM " + tableName + " WHERE id = " + id);

        if (!resultSet.next()) {
            return new File("");
        } else {
            byte[] buffer = new byte[8192];
            int bytesRead = 0;

            InputStream inputStream = resultSet.getBinaryStream(columnName);
            File outFile = new File("c:/out.doc");
            FileOutputStream fileOutputStream = new FileOutputStream(outFile);

            while ((bytesRead = inputStream.read(buffer)) > 0) {
                fileOutputStream.write(buffer, 0, bytesRead);
            }
            fileOutputStream.flush();
            inputStream.close();
            fileOutputStream.close();

            resultSet.close();

            return outFile;
        }
    }

    private static void insertDocumentIntoDatabase(
            File file,
            String tableName,
            String columnName,
            Connection con) throws Exception {
        PreparedStatement preparedStatement = con
                .prepareStatement("INSERT into file_data (data) values (?)");
        preparedStatement.setBinaryStream(
                1,
                new FileInputStream(file),
                (int) file.length());
        preparedStatement.execute();
        preparedStatement.close();
    }

}
```

Gruss Tom


----------

