C# 从SQL检索VarBinary数据并保存图像/文件
当我使用SQL语句时C# 从SQL检索VarBinary数据并保存图像/文件,c#,sql,sql-server,C#,Sql,Sql Server,当我使用SQL语句时 SELECT File_Data FROM Attachments WHERE UserID = '12345' AND FileNames = 'testing1.jpg' 图片下载后看起来很棒。但是,如果我放入一个存储过程,它会在我的名为C:\Testing\的文件夹中创建testing1.jpg的文件,但它没有将数据写入图像中,并且无法正确显示。下面是我必须调用存储过程并编写它的内容。你知道我做错了什么吗 出于测试目的: strfilename=testing
SELECT File_Data
FROM Attachments
WHERE UserID = '12345' AND FileNames = 'testing1.jpg'
图片下载后看起来很棒。但是,如果我放入一个存储过程,它会在我的名为C:\Testing\
的文件夹中创建testing1.jpg
的文件,但它没有将数据写入图像中,并且无法正确显示。下面是我必须调用存储过程并编写它的内容。你知道我做错了什么吗
出于测试目的:
- strfilename=
testing1.jpg
- userid=
12345
ALTER PROCEDURE [dbo].[GET_ATTACHMENT]
@User_ID int,
@FileName nvarchar(250)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @FileData varbinary(max)
Set @FileData = (SELECT File_Data FROM Attachments
WHERE UserID = @User_ID and
FileNames = @FileName);
SELECT @FileData
END
一些建议:
在byte[]fileData=(byte[])dr.GetValue(0)处设置断点
以查看在将数据写入文件之前是否返回了任何数据
使用命令行为。默认值
使用CommandBehavior.SequentialAccess
时,请尝试使用SqlDataReader的方法
最后,请将您的SP更改为返回用户ID,以检查是否返回了任何内容。返回的数据为:System.Byte[]返回的值为空。@mrmcg即使在使用
命令行为时也是如此。默认值
?那么你能运行任何存储过程吗?是的。它将运行,但没有数据通过。
ALTER PROCEDURE [dbo].[GET_ATTACHMENT]
@User_ID int,
@FileName nvarchar(250)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @FileData varbinary(max)
Set @FileData = (SELECT File_Data FROM Attachments
WHERE UserID = @User_ID and
FileNames = @FileName);
SELECT @FileData
END