0

我有sql带有表图像的数据库,在该表中有 2 个Columns ID(身份),DisplayImage (图像)。我写的第一行表有 2 行

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

第二行为

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();

如果我使用的是正常插入的 id 1,那么它会给出无效参数的错误,但如果我使用 id 2,它会正常运行。那么区别是什么呢??以及我必须进行哪些更改才能运行正常的插入图像。我不想BLOB在插入语句中使用 AS

4

1 回答 1

0

insert 1 语句插入字符串 'Libraries\Pictures\Lotus.jpg' 而不是图像。这就是为什么当您访问它时会给出无效参数错误。

如果您必须存储图像,则必须使用 BLOB

于 2012-09-07T09:33:30.117 回答