【发布时间】:2013-07-10 02:13:43
【问题描述】:
我有一个 PDF,我需要将它插入到 SQL Server 表的 varbinary 列中。
我使用 C# 将 PDF 转换为字节数组
byte[] bytes = File.ReadAllBytes(fileName);
我给SqlCommand添加了一个参数:
SqlParameter fileP = new SqlParameter("@file", SqlDbType.VarBinary);
fileP.Value = bytes;
myCommand.Parameters.Add(fileP);
存储过程基本上采用varbinary 参数并插入到表的varbinary 列中
create procedure pdfInsert
@file varbinary(MAX)
as
insert ...
执行此过程时出现错误。
在 SQL Server 探查器中,我发现执行了以下过程
exec pdfInsert @file = 0x2555... <-- byte array of pdf
错误是
消息 102,第 15 级,状态 1,第 2 行
'40E3' 附近的语法不正确。
在 SSMS 中,当我在两个字节数组中使用单引号执行此过程时。
像这样:
exec pdfInsert @file = '0x2555.......'
我得到错误:
不允许从数据类型 varchar(max) 到 varbinary(max) 的隐式转换。使用 CONVERT 函数运行此查询。
只是想知道我做错了什么?任何帮助深表感谢。谢谢
【问题讨论】:
-
表中的数据类型是varChar(max)而不是varbinary(MAX)?
-
@Decker97 它的 varbinary(MAX)。
标签: c# sql sql-server stored-procedures