2013-10-31 95 views
0

我试图将图片插入其中有型(图)列的表像。这里是我的尝试:插入并从SQL Server数据库

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. 将图像存储在数据库中的缺点是将图像保存在服务器的文件夹中。

回答

1

你不能在你的INSERT声明混合VALUESSELECT方法 - 使用一个其他的,但你不能将它们混合。

所以一个做到这一点的方法是使用:

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) 

无论选择哪种方法更适合你 - 这两个同样出色的工作。

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

See details about this here

+0

谢谢。但如果图像在不同的实例中,这将无法正常工作?有没有办法呢? –

+0

@NevilleNazerane:你的意思是不同的实例*? –

相关问题