# Problem mit Ablage einer Datei in einer Datenbank als BLOB



## yokel (21. Sep 2004)

Hi,
jetzt wirds langsam kniffliger, aber es gibt ja massig Cracks hier. Ich habe zwei Beiträge zuvor erfragt, wie ich eine Datei als BLOB in die DB schreiben kann. siehe:

http://www.java-forum.org/de/viewtopic.php?t=8626

Jetzt habe ich folgendes Problem. Danach ist die Datei hinüber (bei z.B. JPGs) Die Dateilänge ist um ein paar wenige Bytes kürzer. 
Wenn ich nun die Eigenschaften der Datei (in Windows) ansehe, so fehlen im Vergleich zum Original diverse Dateiinfos: Breite, Höhe, Farbdarstellung, ....

Und somit kann ich die in die DB eingefügte Datei nicht mehr verwenden.

Kann mir jemand weiterhelfen, wäre wirklich super nett.

Merci

Gruß

Marco


----------



## P3AC3MAK3R (21. Sep 2004)

Titel präzisiert.


----------



## Bleiglanz (21. Sep 2004)

code? welche db?


----------



## yokel (23. Sep 2004)

Bleiglanz hat gesagt.:
			
		

> code? welche db?



Hi, also ich verwende eine MySQL-Datenbank. Und hier ist der Code. Wäre wie erwähnt super, wenn man mir helfen könnte.


Merci



```
try
{
    File file = new File("C:\\Daten\\test.jpg");
    StringBuffer sb = new StringBuffer();

    FileInputStream fis = new FileInputStream(file);
    BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
    while(reader.ready())
    {
    	sb.append(reader.readLine());
    }
    reader.close();
    			    
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver").newInstance();
    Class.forName("com.mysql.jdbc.Driver").newInstance();
    Connection condest = DriverManager.getConnection(
    "jdbc:mysql://rechner.adress.de:3306/test", "user", "pw");

    String s = sb.toString();
    byte[] bytes = s.getBytes();
			
    StringBuffer sql = new StringBuffer();
    sql.append("INSERT INTO db_test.attachments ");
    sql.append("(attach_id, b_id, creation_ts, description, mimetype, ");
    sql.append("filename, thedata, submitter_id) ");
    sql.append("VALUES ('', 233, '2004-09-17 10:00:00', 'Test', 'image/jpg', ");
    sql.append("'" + file.getName() + "', ?, 3);");
			
    PreparedStatement pst = condest.prepareStatement(sql.toString());
    pst.setBytes(1, bytes);
    pst.execute();
    pst.close();
}
```
[/quote]


----------



## Bleiglanz (23. Sep 2004)

bist du narrisch?

man darf für binärdaten keine Reader/Writer nehmen weil die wildes Character-Encoding vornehmen, du musst die rohen Streams verwenden 


ByteArrayInputStream
ByteArrayOutputStream


----------



## yokel (23. Sep 2004)

Bleiglanz hat gesagt.:
			
		

> bist du narrisch?
> 
> man darf für binärdaten keine Reader/Writer nehmen weil die wildes Character-Encoding vornehmen, du musst die rohen Streams verwenden
> 
> ...



Dann erstmal danke für die Auskunft. Ist es dann möglich auch alle anderen Dateien so zu behandeln ??? Also Txt-Dateien, ....


----------



## yokel (23. Sep 2004)

yokel hat gesagt.:
			
		

> Bleiglanz hat gesagt.:
> 
> 
> 
> ...


----------

