首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL server数据库中存储PDF文件

在SQL server数据库中存储PDF文件
EN

Stack Overflow用户
提问于 2018-12-27 23:37:27
回答 1查看 1.4K关注 0票数 0

我正在尝试将PDF文件保存到我的数据库表中,是否有任何适当的方法可以做到这一点。我正在使用C++/CLI。

我已经尝试了下面的代码,但我得到的是System.byte[]而不是实际值

代码语言:javascript
复制
    FileStream^ fs = gcnew FileStream("E:\\test.pdf",FileMode::Open,FileAccess::Read);
    BinaryReader^ br=gcnew BinaryReader(fs);
cli::array<System::Byte>^ Mybuffer=gcnew cli::array<System::Byte>(fs->Length);
Mybuffer =br->ReadBytes(Convert::ToInt32(fs->Length));

SqlCommand^ cmd = gcnew SqlCommand
    ("Insert Into Employees(empName,branchGuid,cvFile) values ('" + textBox1->Text + "',(select branchGuid from Branches where branchName='" + branchesComboBox->SelectedValue->ToString() + "')," + Mybuffer +");", conn);
      SqlDataAdapter^ sda = gcnew SqlDataAdapter(cmd);
      DataSet^ ds = gcnew DataSet();
      sda->Fill(ds, "insert");
EN

回答 1

Stack Overflow用户

发布于 2018-12-28 06:13:21

问题出在您将缓冲区连接到SQL命令中。

代码语言:javascript
复制
+ Mybuffer +");"

Mybuffer的类型为array<Byte>^。当您对字符串以外的其他对象进行字符串连接时,它会调用ToString()。当调用ToString时,.Net数组类不会输出数组内容,它只是执行默认行为,即输出类名(以C#格式,因此是[]而不是array<>)。

您还没有说明Employees表的cvFile字段是如何定义的。您需要遍历字节数组并使用所有字节的值创建SQL语句,或者可能需要使用其他API来插入数据。如果是BLOB类型,请看这个答案,这里有很多好的概念:How to insert BLOB datatype

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53947433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档