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# dump系统lsass内存和sam注册表详细

    首先我们需要了解一下“C#dump系统lsass内存和sam注册表详细”是什么。 lsass.exe是Windows系统的一个进程,它主要负责对用户登录信息进行验证和授权。lsass.exe在Windows系统启动时自动运行,并且至关重要。SAM(Security Accounts Manager)注册表是Windows系统中的一个数据库,其中存储着用户名和…

    C# 2023年5月15日
    00
  • .NET Core支持Cookie和JWT混合认证、授权的方法

    在.NET Core中,我们可以使用Cookie和JWT混合认证、授权的方法来实现更加灵活和安全的身份验证和授权。本攻略将深入探讨这种方法的实现,并提供两个示例说明。 1. 混合认证、授权的基本原理 混合认证、授权的基本原理是将Cookie和JWT结合使用。当用户登录时,我们将用户信息存储在Cookie中,并将JWT作为响应的一部分返回给客户端。客户端在后续…

    C# 2023年5月17日
    00
  • C#使用dynamic类型访问JObject对象

    访问JObject对象是Json.NET中一项常见任务,通过C#的dynamic类型来达到目的。 首先,我们需要安装Newtonsoft.Json NuGet包。可以在Visual Studio中使用“项目”菜单中的“管理NuGet程序包”菜单选项,在“已安装”选项卡中查看已安装的包,并在“浏览”选项卡中搜索并安装Newtonsoft.Json包。 接下来,…

    C# 2023年5月31日
    00
  • .NET MemoryCache如何清除全部缓存

    清除.NET MemoryCache中全部缓存可以通过以下步骤来实现: 实例化MemoryCache对象 在.NET中,可以通过实例化MemoryCache类来创建缓存对象,如下所示: using System; using System.Runtime.Caching; MemoryCache cache = MemoryCache.Default; 删除…

    C# 2023年6月6日
    00
  • C#程序调用cmd.exe执行命令

    C#程序调用cmd.exe执行命令 在C#程序中,有时候需要调用cmd.exe执行命令。本文将介绍如何在C#程序中调用cmd.exe执行命令。 步骤1:使用Process类调用cmd.exe 首先,我们需要使用C#的Process类调用cmd.exe。以下是一个简单的示例: using System.Diagnostics; Process process …

    C# 2023年5月15日
    00
  • .net实现webservice简单实例分享

    关于“.NET实现WebService简单实例分享”的攻略,我将按照以下格式为您进行详细讲解: 1. 什么是Web Service? Web Service是指通过网络对外提供的一组应用程序接口,具有跨平台性、松耦合等特点。通过Web Service,开发人员可以将自己的应用程序接口(API)发布到Internet上,以使得全世界的人都能发现并使用自己的AP…

    C# 2023年5月31日
    00
  • C#中的位操作小结

    让我来给您详细讲解“C#中的位操作小结”的完整攻略。 一、概述 C#中的位操作是指可以直接打开和操纵整数的各个位的操作,它是一种非常高效和灵活的算法。在C#中,位操作可以方便地完成各种数据的处理和转换,如颜色值、文件属性、位图、掩码等等。 二、位操作运算符 C#中常用的位操作运算符有以下几种: & 按位与:将两个操作数对应的位进行与操作,结果为1的位…

    C# 2023年6月7日
    00
  • C#中使用ADOMD.NET查询多维数据集的实现方法

    C#中使用ADOMD.NET查询多维数据集的实现方法 1. 什么是ADOMD.NET ADOMD.NET是一种数据访问技术,用于查询和管理多维数据源中的数据。它是.NET Framework的一部分,被设计用作访问和查询分析服务多维数据源和数据挖掘模型的.NET组件。 2. ADOMD.NET的安装 在使用ADOMD.NET前,需要先安装Microsoft®…

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