我正在尝试将PDF文件保存到我的数据库表中,是否有任何适当的方法可以做到这一点。我正在使用C++/CLI。
我已经尝试了下面的代码,但我得到的是System.byte[]而不是实际值
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");发布于 2018-12-28 06:13:21
问题出在您将缓冲区连接到SQL命令中。
+ Mybuffer +");"Mybuffer的类型为array<Byte>^。当您对字符串以外的其他对象进行字符串连接时,它会调用ToString()。当调用ToString时,.Net数组类不会输出数组内容,它只是执行默认行为,即输出类名(以C#格式,因此是[]而不是array<>)。
您还没有说明Employees表的cvFile字段是如何定义的。您需要遍历字节数组并使用所有字节的值创建SQL语句,或者可能需要使用其他API来插入数据。如果是BLOB类型,请看这个答案,这里有很多好的概念:How to insert BLOB datatype
https://stackoverflow.com/questions/53947433
复制相似问题