2011-01-17 17 views
0

Ich brauche einen Code zu speichern (eventuell große Dateien) in DB C#.speichern große binäre Daten in SQL-DB mit C#

Die Lösung I verwendet habe, ist, wie etw: (Ich verwende varbinary (MAX) in der Spalte DB)

1) Erstellen SqlCommand

2) Erstellen SqlParameter

3 Set) parameter.Value = File.ReadAllBytes (filePath)

4) Führen Sie SqlCommand

gibt es eine effektivere Lösung? Da die Datei groß sein kann, habe ich Probleme mit der Leistung, wenn ich alle Bytes in den Speicher lese und sie dann in der Datenbank ablege.

Vielen Dank im Voraus

+0

ist nicht eine exakte Kopie, aber sehr ähnlich Dieses http://stackoverflow.com/questions/8952/storing-a-file-in-a-database-as-opposed-to-the-file-system Frage wurde hier auf viele verschiedene Arten gestellt, und der Konsens ist immer, dass das Speichern von Dateien in einer Datenbank eine schlechte Idee ist. Leistung wird fast immer ein Problem sein. – David

+2

@David - ** Große ** Dateien. Siehe dieses Whitepaper: http://research.microsoft.com/apps/pubs/?id=64525 – Oded

+0

Vielen Dank für den Link, @Oded. Lies es jetzt. – David

Antwort

1

Was Sie haben, ist das Beste, was Sie mit einer varbinary(MAX) Säule erhalten. Während Sie Daten aus der Datenbank streamen können, gibt es keine Möglichkeit, es in zu streamen.

2

ich die gleiche Frage, die sich jetzt. Es gibt eine Möglichkeit, sequentiell in varbinäre Felder zu schreiben. Lesen Sie diesen Artikel: ‚Download- und Upload-Bilder von SQL Server über ASP.NET MVC‘ http://www.codeproject.com/KB/aspnet/streamingblobhttp.aspx

Es hat eine Art und Weise zeigt einen Befehl wie zu verwenden:

UPDATE <table> SET <field>.WRITE(@data, null, null) WHERE ... 

Dies ermöglicht Datenblöcke in die Spalte zu schreiben, ohne eine ganze Datei lesen müssen. Diese