0

我正在尝试将图像插入到具有类型(图像)的列的表中。这是我尝试过的:

INSERT INTO tblDDPhotos(ID, img)
VALUES (1, SELECT * FROM
OPENROWSET(BULK 'blob:http%3A//localhost%3A64527/81655427-3653-427d-92bf-254cd2a2e647', SINGLE_BLOB) as imagefile)`

我想知道,

  1. 我们如何从blob插入图像。
  2. 我们如何访问和检索图像。
  3. 将图像存储在数据库中与将图像保存在服务器的文件夹中相比有什么缺点。
4

1 回答 1

1

你不能在你的陈述中混合使用VALUESSELECT方法——使用其中一种但你不能混合使用它们。INSERT

因此,一种方法是使用:

DECLARE @FileContents VARBINARY(MAX)

SELECT @FileContents = BulkColumn
FROM OPENROWSET(BULK 'blob:http%3A//localhost%3A64527/81655427-3653-427d-92bf-254cd2a2e647', SINGLE_BLOB) as imagefile)

INSERT INTO tblDDPhotos(ID, img)
VALUES (1, @FileContents)

或者替代方法是使用:

INSERT INTO tblDDPhotos(ID, img)
   SELECT 1, BulkColumn
   FROM OPENROWSET(BULK 'blob:http%3A//localhost%3A64527/81655427-3653-427d-92bf-254cd2a2e647', SINGLE_BLOB)

选择更适合您的方法 - 两者都同样有效。

旁注:ntexttextimage数据类型将在 SQL Server 的未来版本中删除。避免在新的开发工作中使用这些数据类型,并计划修改当前使用它们的应用程序。使用nvarchar(max),varchar(max)varbinary(max)代替。

在此处查看有关此的详细信息

于 2013-10-31T08:08:48.727 回答