2011-08-30 56 views
0
CREATE PROCEDURE uspInsertImage 
@PCImage varbinary(max) 
As 
Begin 

INSERT INTO dbo.PCInfo PCImage) 
VALUES (@PCImage) 

End 

当我收件从数据类型为varchar隐式转换为VARBINARY(最大)是不允许的

EXEC uspInsertPC 'D:\Desktop.jpg' 

显示错误

从数据类型为varchar到VARBINARY(最大)隐式转换是不允许 。使用CONVERT函数来运行此查询。

+1

您是否试图将实际的文件插入到数据库中? – Sumo

+1

为什么参数声明为'varbinary(max)',如果你只是传递一个字符串给它? –

回答

2

您正在试图将字符串保存到一个二进制列,这就是为什么你收到此错误

你应该告诉SQL服务器通过使用OPENROWSET

你应该做的事情为使用不同的源提供下面:

INSERT INTO BLOBTest 
    (BLOBName, BLOBData) 
    SELECT 'First test file', 
     BulkColumn FROM OPENROWSET(
      Bulk 'C:\temp\nextup.jpg', SINGLE_BLOB) AS BLOB 

欲了解更多信息看看下面:

http://www.databasejournal.com/features/mssql/article.php/3724556/Storing-Images-and-BLOB-files-in-SQL-Server-Part-2.htm

+0

+1但@Ygege如果这是你正在尝试做的文件路径需要从服务器的POV而不是你的机器(如果不同) –

相关问题