2

我目前正在开发一个 Windows Forms 应用程序(C#,VS 2010),我需要创建功能,使用户能够将文件上传.pdf.exeSQL Server 2008 数据库并下载回来。

我遇到的问题是从数据库下载的文件总是损坏(.txt文件除外),即使它们大小相同。并且我已经使用varbinary(MAX)文件类型来将数据存储在数据库中。

谁能给我看一些如何做到这一点的示例代码?

PS:我研究了一个多星期,但仍然找不到解决我的问题的方法,有人可以帮忙吗?任何答案将不胜感激。

4

1 回答 1

1

在下面的示例中,做了一些假设:

  1. 我正在使用Dapper进行数据库访问。它扩展了任何 IDbConnection对象。
  2. 我在数据库中有一个这样定义的表CREATE TABLE Data (Id INT IDENTITY(1, 1) PRIMARY KEY, Data VARBINARY(MAX))
  3. 是文档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();
}
于 2012-09-20T11:37:31.363 回答