我想使用其位置从数据库中获取PDF文件,并将其显示在我的表单应用程序上。我观看了许多Youtube视频,但没有一个能解决我的问题。我可以尝试用哪种其他方式?
string f = comboBox2.Text;
string qu = "SELECT location FROM attachments WHERE name='" + f + "'";
SqlCommand com = new SqlCommand(qu, con);
SqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
var input = reader["location"].ToString();
this.axAcroPDF1.LoadFile(input);
}
我的数据库表看起来像
CREATE TABLE [dbo].[attachments]
(
[Id] INT IDENTITY (1, 1) NOT NULL,
[idno] INT NULL,
[name] VARCHAR (MAX) NULL,
[location] VARCHAR (MAX) NULL
);
关于此问题,我从任何视频中都没有得到任何帮助。有什么建议可以改善此代码吗?
答案 0 :(得分:0)
将位置字段更改为VarBinary。
CREATE TABLE [dbo].[attachments] (
[Id] INT IDENTITY (1, 1) NOT NULL,
[idno] INT NULL,
[name] VARCHAR (MAX) NULL,
[location] VARBINARY (MAX) NULL
);
如果LoadFile方法接受字节数组,请使用字节数组,否则写入磁盘...
string f = comboBox2.Text;
string qu = "SELECT location FROM attachments WHERE name=@name";
SqlCommand com = new SqlCommand(qu, con);
com.Parameters.Add(new SqlParameter("@name", f);
SqlDataReader reader = com.ExecuteReader();
while (reader.Read())
{
var file = (byte[])reader["location"];
this.axAcroPDF1.LoadFile(file);
//else use a method like 'File.WriteAllBytes(file);'
}