2011-01-17 14 views
0

C#を使用してDBにファイルを格納するコードが必要です。C#を使用して大規模なバイナリデータをSQL DBに保存します

私が使用している溶液がSTHのようである: (私はDB内のvarbinary(MAX)カラムを使用している)

1)SqlCommandオブジェクト

2の作成)SqlParameter

3を作成)を設定しparameter.Value = File.ReadAllBytes(filePathに)

4)は、SqlCommandオブジェクト

は、任意のより効果的な解決策があるの実行しますか?ファイルが大きくなる可能性があるため、すべてのバイトをメモリに読み込んでDBに格納する際に、パフォーマンス上の問題があります。

は、あなたが持っているどのような事前

+0

これは正確な複製ではありませんが、http://stackoverflow.com/questions/8952/storing-a-file-in-a-database-as-opposed-to-the-file-systemと非常によく似ています質問はここではさまざまな方法で求められています。合意は、常にファイルをデータベースに格納することが悪い考えです。パフォーマンスはほとんどの場合、最終的には問題になります。 – David

+2

@David - **大きな**ファイル。このホワイトペーパーを参照してください。http://research.microsoft.com/apps/pubs/?id=64525 – Oded

+0

リンクありがとうございました。それを今読んでください。 – David

答えて

1

にありがとうあなたはvarbinary(MAX)列で得ることができる最高です。データをデータベースのにストリームすることはできますが、にストリームする方法はありません。

2

私は今同じ問題に直面しています。 varbinaryフィールドに順次書き込む方法があります。それは次のようなコマンドを使用する方法を示して「ダウンロードおよびASP.NET MVC経由のSQL Serverからの画像をアップロード」http://www.codeproject.com/KB/aspnet/streamingblobhttp.aspx

:この記事を参照してください

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

これがなくても、列にデータのチャンクを書き込むことができますファイル全体を読み込む必要があります。

関連する問題