我目前正在开发一个 Windows Forms 应用程序(C#,VS 2010),我需要创建功能,使用户能够将文件上传.pdf
到.exe
SQL Server 2008 数据库并下载回来。
我遇到的问题是从数据库下载的文件总是损坏(.txt
文件除外),即使它们大小相同。并且我已经使用varbinary(MAX)
文件类型来将数据存储在数据库中。
谁能给我看一些如何做到这一点的示例代码?
PS:我研究了一个多星期,但仍然找不到解决我的问题的方法,有人可以帮忙吗?任何答案将不胜感激。
我目前正在开发一个 Windows Forms 应用程序(C#,VS 2010),我需要创建功能,使用户能够将文件上传.pdf
到.exe
SQL Server 2008 数据库并下载回来。
我遇到的问题是从数据库下载的文件总是损坏(.txt
文件除外),即使它们大小相同。并且我已经使用varbinary(MAX)
文件类型来将数据存储在数据库中。
谁能给我看一些如何做到这一点的示例代码?
PS:我研究了一个多星期,但仍然找不到解决我的问题的方法,有人可以帮忙吗?任何答案将不胜感激。
在下面的示例中,做了一些假设:
IDbConnection
对象。CREATE TABLE Data (Id INT IDENTITY(1, 1) PRIMARY KEY, Data VARBINARY(MAX))
。ReadAllBytes
因此,很明显,由于您没有提供围绕表结构的任何内容,您将不得不更改此代码以满足您的需求,但这会让您开始。
this.connection.Open();
try
{
var parameters = new
{
Data = File.ReadAllBytes(...);
};
return connection.Execute("INSERT INTO Data (Data) VALUES (@Data)", parameters);
}
finally
{
this.connection.Close();
}
this.connection.Open();
try
{
var parameters = new { Id = 1 };
return connection.Query(
"SELECT Data FROM dbo.Data WHERE Id = @Id", parameters)
.Select(q => q.Data as byte[])
.Single();
}
finally
{
this.connection.Close();
}