微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

将扫描的pdf插入数据库c#

如何解决将扫描的pdf插入数据库c#

我正在尝试将 pdf PdfDocument doc 插入包含扫描文档的数据库中。当我尝试添加它时,我收到下一条消息错误

System.Data.sqlClient.sqlException: '不允许从 nvarchar 类型到 varbinary(max) 类型的隐式转换。使用函数 CONVERT 执行此查询。'

我使用的是 Visual Studio 2019 和 sql Server 2012。

sqlCommand add = new sqlCommand("UPDATE table SET documento = @documento WHERE p = @contentP AND n = @contentN;",con);
add.Parameters.AddWithValue("@documento",Convert.ToString(doc));
add.Parameters.AddWithValue("@contentP",contentP);
add.Parameters.AddWithValue("@contentN",contentN);
con.open();
add.ExecuteNonQuery();
con.Close();

解决方法

System.Data.SqlClient.SqlException: '不允许从 nvarchar 类型到 varbinary(max) 类型的隐式转换。使用函数 CONVERT 执行此查询。'

您的问题是因为您试图通过执行 NVARCHARVARBINARY(MAX) 挤入 Convert.ToString(doc) 列。您必须获得一个 byte[] 并将其用作您的参数值

要修复此错误,您需要将 PdfSharp.Pdf.PdfDocument 保存到 MemoryStream,然后从流中获取 byte[],请参见下文。

 MemoryStream stream = new MemoryStream(); 
 doc.Save(stream,false); 
 byte[] bytes = stream.ToArray();

现在您可以使用 bytes 作为您的 documento 参数值。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。