我目前正在开发Windows窗体应用程序(C#,VS 2010),我需要创建一些功能,使用户能够将.pdf
,.exe
文件上传到SQL Server 2008数据库并下载它们背部。
我遇到的问题是从数据库下载的文件总是被破坏(.txt
文件除外),即使它们的大小相同。我使用varbinary(MAX)
作为文件类型来将数据存储在数据库中。
有人能告诉我一些如何执行此操作的示例代码吗?
PS:我已研究了一个多星期,但仍无法找到解决问题的方法,有人可以帮忙吗?任何答案都将受到高度赞赏。答案 0 :(得分:1)
在下面的例子中,有一些假设:
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();
}