gpt4 book ai didi

c# - 使用 C# 将 PDF 作为字节数组插入到 SQL Server 存储过程

转载 作者:行者123 更新时间:2023-11-30 22:16:12 24 4
gpt4 key购买 nike

我有一个 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

错误是

Msg 102, Level 15, State 1, Line 2
Incorrect syntax near '40E3'.

在 SSMS 中,当我在两个字节数组中使用单引号执行此过程时。

像这样:

 exec pdfInsert @file = '0x2555.......'

我得到错误:

Implicit conversion from data type varchar(max) to varbinary(max) is not allowed. Use the CONVERT function to run this query.

只是想知道我做错了什么?任何帮助深表感谢。谢谢

最佳答案

这段代码对我有用:

private void button1_Click(object sender, EventArgs e)
{
byte[] bytes = File.ReadAllBytes(@"C:\pdf.pdf");
SqlParameter fileP = new SqlParameter("@file", SqlDbType.VarBinary);
fileP.Value = bytes;
SqlCommand myCommand = new SqlCommand();
myCommand.Parameters.Add(fileP);
SqlConnection conn = new SqlConnection(@"Data Source=CoastAppsDev\SQL2008;Initial Catalog=CSharpWinForms;Integrated Security=True;");
conn.Open();
myCommand.Connection = conn;
myCommand.CommandText = "spPdfInsert";
myCommand.CommandType = CommandType.StoredProcedure;
myCommand.ExecuteNonQuery();
conn.Close();

}

使用存储过程:

Create Procedure [dbo].[spPdfInsert] (
@file varbinary(max) = null
)
AS


Insert Into Pdfs
( pdfData )
Values
( @file )

您使用的是什么版本的 SQL Server? 2008 年?

关于c# - 使用 C# 将 PDF 作为字节数组插入到 SQL Server 存储过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17554333/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com