C#实现文件与二进制互转并存入数据库

下面我将为你详细讲解“C#实现文件与二进制互转并存入数据库”的完整攻略。

1. 准备工作

首先,我们需要在C#中引入System.IOSystem.Data.SqlClient命名空间,分别用于操作文件和数据库。

using System.IO;
using System.Data.SqlClient;

2. 将文件转换为二进制数据

接下来,我们需要将文件转换为二进制数据,使用FileStream类读取文件,并将其转换为byte[]类型的数据,具体代码如下:

byte[] fileData;
string filePath = "文件路径";

using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
    using (BinaryReader br = new BinaryReader(fs))
    {
        fileData = br.ReadBytes((int)fs.Length);
    }
}

3. 将二进制数据转换为文件

如果需要从数据库中读取二进制数据并转换为文件,可以使用FileStream类将二进制数据写入到文件中,具体代码如下:

byte[] fileData; //从数据库中读取到的二进制数据
string filePath = "存储文件路径";

using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
    using (BinaryWriter bw = new BinaryWriter(fs))
    {
        bw.Write(fileData);
    }
}

4. 将二进制数据存入数据库

将二进制文件存入数据库,我们需要使用SqlParameter类的SqlDbType.VarBinary类型来创建参数,具体代码如下:

byte[] fileData; //二进制文件数据
string connectionString = "数据库连接字符串";
string tableName = "表名";
string fileName = "文件名";

using (SqlConnection con = new SqlConnection(connectionString))
{
    string sql = $"INSERT INTO {tableName} (FileName, FileData) VALUES (@FileName, @FileData)";

    using (SqlCommand cmd = new SqlCommand(sql, con))
    {
        cmd.Parameters.Add("@FileName", SqlDbType.NVarChar).Value = fileName;
        cmd.Parameters.Add("@FileData", SqlDbType.VarBinary).Value = fileData;

        con.Open();
        cmd.ExecuteNonQuery();
    }
}

5. 从数据库中读取二进制数据

从数据库中读取二进制数据,我们需要使用SqlDataReader类读取结果集,并将二进制数据转换为byte[]类型的数据,具体代码如下:

byte[] fileData; //从数据库中读取到的二进制数据
string connectionString = "数据库连接字符串";
string tableName = "表名";
string fileName = "文件名";

using (SqlConnection con = new SqlConnection(connectionString))
{
    string sql = $"SELECT FileData FROM {tableName} WHERE FileName = @FileName";

    using (SqlCommand cmd = new SqlCommand(sql, con))
    {
        cmd.Parameters.Add("@FileName", SqlDbType.NVarChar).Value = fileName;

        con.Open();

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
                fileData = (byte[])reader["FileData"];
            }
        }
    }
}

示例1:将本地的test.txt文本文件转为二进制数据后存入数据库

string filePath = "本地文件路径";
byte[] fileData;

using (FileStream fs = new FileStream(filePath, FileMode.Open))
{
    using (BinaryReader br = new BinaryReader(fs))
    {
        fileData = br.ReadBytes((int)fs.Length);
    }
}

string connectionString = "数据库连接字符串";
string tableName = "表名";
string fileName = "test.txt";

using (SqlConnection con = new SqlConnection(connectionString))
{
    string sql = $"INSERT INTO {tableName} (FileName, FileData) VALUES (@FileName, @FileData)";

    using (SqlCommand cmd = new SqlCommand(sql, con))
    {
        cmd.Parameters.Add("@FileName", SqlDbType.NVarChar).Value = fileName;
        cmd.Parameters.Add("@FileData", SqlDbType.VarBinary).Value = fileData;

        con.Open();
        cmd.ExecuteNonQuery();
    }
}

示例2:从数据库中读取test.txt文件的二进制数据并将其转换为本地的test_copy.txt文件

byte[] fileData;
string connectionString = "数据库连接字符串";
string tableName = "表名";
string fileName = "test.txt";
string filePath = "本地存储文件路径";

using (SqlConnection con = new SqlConnection(connectionString))
{
    string sql = $"SELECT FileData FROM {tableName} WHERE FileName = @FileName";

    using (SqlCommand cmd = new SqlCommand(sql, con))
    {
        cmd.Parameters.Add("@FileName", SqlDbType.NVarChar).Value = fileName;

        con.Open();

        using (SqlDataReader reader = cmd.ExecuteReader())
        {
            if (reader.Read())
            {
                fileData = (byte[])reader["FileData"];
            }
        }
    }
}

using (FileStream fs = new FileStream(filePath, FileMode.Create))
{
    using (BinaryWriter bw = new BinaryWriter(fs))
    {
        bw.Write(fileData);
    }
}

以上就是“C#实现文件与二进制互转并存入数据库”的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#实现文件与二进制互转并存入数据库 - Python技术站

(0)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • C#判断字符串是否是int/double(实例)

    下面就是详细的攻略: 题目背景 在我们的日常工作中,可能会遇到需要判断一个字符串值是否是整数或者浮点数。比如,我们从用户输入表单中获取到了一个值,我们需要判断这个值是不是整数或浮点数。在C#中,我们可以采用以下的方式来判断字符串是否是整数或者浮点数。 判断字符串是否是整数 我们可以使用C#内置的TryParse方法来判断一个字符串是否是整数,并且可以获取到整…

    C# 2023年6月8日
    00
  • C# DataTable常见用法汇总

    C# DataTable常见用法汇总 本攻略将详细讲解C# DataTable的常见用法,包括创建、增删改查、排序、筛选、数据类型转换等。 创建DataTable 创建DataTable之前需要先声明DataTable对象和数据列,并在表对象中添加数据列,代码如下: //声明表对象 DataTable dt = new DataTable(); //添加数据…

    C# 2023年5月31日
    00
  • asp.net获取网站目录物理路径示例

    ASP.NET 是一个非常常用的 Web 应用程序框架,我们经常需要获取网站目录的物理路径来读取文件、写入文件或者其他操作。下面给出 ASP.NET 获取网站目录物理路径的完整攻略。 步骤一:引用命名空间 我们需要引用 System.IO 命名空间来使用 Path 类。 using System.IO; 步骤二:获取网站的根目录 常见的获取网站路径的方法是使…

    C# 2023年5月31日
    00
  • C#中Razor模板引擎简单使用

    C#中的Razor模板引擎是一种用于在代码中嵌套HTML的模板引擎,它可以轻松地将动态数据嵌入HTML中。以下是使用Razor模板引擎的一些简单步骤。 第一步:安装Microsoft.Aspnetcore.Razor.runtime包 Razor模板引擎是使用Microsoft.Aspnetcore.Razor.runtime包实现的。使用NuGet包管理器…

    C# 2023年6月7日
    00
  • C#影院售票系统毕业设计(3)

    “C#影院售票系统毕业设计(3)”提供了影院售票系统的完整设计和开发流程。以下是攻略的详细讲解: 1. 设计数据库 在设计影院售票系统之前,需要对数据库进行设计。可以使用SQL Server Management Studio创建一个名为MovieTicket的数据库,并在其中创建3个表格:Movie(电影)、Hall(影厅)和Ticket(票务信息)。 可…

    C# 2023年6月7日
    00
  • asp.net neatUpload 支持大文件上传组件

    ASP.NET NeatUpload是一个用于实现大文件上传的组件,它支持各种文件上传场景,并提供了丰富的API以适应不同的需求。下面将详细讲解如何使用该组件实现大文件上传的完整攻略。 1. 安装和配置 首先需要将NeatUpload组件添加到项目中。可使用NuGet安装或者手动下载添加。 Nuget安装: Install-Package NeatUploa…

    C# 2023年6月1日
    00
  • C#读写文件的方法汇总

    C#读写文件的方法汇总 在C#编程中,读写文件是一项非常常见的操作。本文将介绍C#语言中常用的文件读写方法。 1. FileStream类 FileStream是.NET Framework中用于读取、写入和操作文件的类。以下是使用FileStream类进行文件读写的示例代码: 读取文件 string path = @"C:\test.txt&qu…

    C# 2023年5月31日
    00
  • 可替代log4j日志的c#简单日志类队列实现类代码分享

    下面是详细讲解“可替代log4j日志的c#简单日志类队列实现类代码分享”的完整攻略。 简介 在进行软件开发时,记录代码执行的日志信息对于调试和问题排查都是非常有帮助的。log4j是一个非常流行的Java日志框架,但在.NET开发中,我们也需要一种轻量级的日志类来记录日志信息。本文将分享一种基于队列实现的C#简单日志类。 实现原理 该日志类的实现借鉴了log4…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部