0

テーブルImagesをsql含むデータベースがあり、そのテーブルには2 Columns ID(identity)、DisplayImage(image)があります。テーブルには、私が書いた最初の行に2つの行があります

insert into Image values(1,'Libraries\Pictures\Lotus.jpg')

と2行目は

INSERT INTO [dbo].[Image] ([Id],Images)
SELECT 2,
(select * FROM OPENROWSET(BULK 'C:\Users\Public\Pictures\Sample Pictures\Tulips.jpg', SINGLE_BLOB) AS BLOB)

画像を読み取るためのコードは次のとおりです

WebClient instanceHTTP = new WebClient();
            Uri MyUri = new Uri("http://localhost:52293/WebSite/ImageHandler.ashx?ImageId=" + TextBox5.Text);    //TextBox5.Text for id i.e 1 or 2
            Stream returnValue;
        returnValue = instanceHTTP.OpenRead(MyUri);


 **System.Drawing.Image MyImage = System.Drawing.Image.FromStream(returnValue);**  
// Error if id=1 used i.e normal insert

        bytearray = imageToByteArray(MyImage);

                    MyImage.Dispose();

通常の挿入であるID1を使用すると、無効なParmeterというエラーが発生しますが、ID2を使用すると正しく実行されます。では、違いは何ですか?通常の挿入画像を実行するために必要な変更..BLOB挿入ステートメントでASを使用したくない

4

1 に答える 1

0

insert 1 ステートメントは、画像の代わりに文字列 'Libraries\Pictures\Lotus.jpg' を挿入します。そのため、アクセスすると無効なパラメーター エラーが発生します。

画像を保存する必要がある場合は、BLOB を使用する必要があります

于 2012-09-07T09:33:30.117 に答える