3

私は教育ドメインのウェブサイトを開発しています。SQL Server 2008を使用してドキュメント (MS Word またはテキスト ファイル) をデータベースにバイナリ形式で保存したいのですFilestreamが、テキスト ボックスでドキュメントを取得できません。

私のコードは次のとおりです。

string path = reader.GetString(0);
SqlFileStream stream1 = new SqlFileStream(path, (byte[])reader.GetValue(1), FileAccess.Read, FileOptions.SequentialScan, 0);   
StreamReader fs = new StreamReader(stream1);

fs = File.OpenText(path);
string s = fs.ReadToEnd();

txtInput.Text = s;
//lblStatus.Text = "File Succesfully Read!"
fs.Close();

このコードは、データベースではなくファイルシステムに保存されているドキュメントに対してのみ機能します。そこで、次のコードを試しました。

string path = reader.GetString(0);
SqlFileStream stream1 = new SqlFileStream(path, (byte[])reader.GetValue(1), FileAccess.Read, FileOptions.SequentialScan, 0);   
StreamReader fs = new StreamReader(stream1);

fs = File.OpenText(path);
string s = fs.ReadToEnd();

txtInput.Text = s;
//lblStatus.Text = "File Succesfully Read!"
fs.Close();

このコードでは、fs = File.OpenText(path); 「パスへのアクセスが拒否されました」というエラーがオンラインで発生します。

助けてください!

4

4 に答える 4

1

この記事を確認してください。SQL Server 2008 でのファイル ストリーム操作がどのように機能するかが詳細に示されています。

マルク

于 2009-04-20T05:47:52.300 に答える
1

stream1 を使用してデータを読み取る必要があります。StreamReader と File.OpenText のアプローチは機能しません。T-SQL または SqlFileStream オブジェクトを使用してのみファイル ストリーム データを読み取ることができます。

于 2009-11-30T08:00:13.453 に答える
0

私の理解によると、Windows認証を介してサーバーに接続する必要があります。SQL Server 認証では機能しません。また、Windows ユーザーは、データを格納するために SQL Server によって作成された共有フォルダーにアクセスできる必要があります。

于 2009-04-20T06:33:25.997 に答える
0

どちらの例でも、SqlFileStream または StreamReader を使用せず、File.OpenText のみを使用しています。

StreamReader fs = new StreamReader(stream1);

fs = File.OpenText(path);
string s = fs.ReadToEnd();

File.OpenText はディスク上のファイルに対してのみ機能し、SQL ファイルストリームでは機能しないため、ストリーム リーダーを使用する必要があります。これでうまくいくはずです:

StreamReader fs = new StreamReader(stream1);

string s = fs.ReadToEnd();
于 2013-04-08T05:36:40.553 に答える