C#从数据库读取图片并保存的两种方法

首先我们需要了解以下两种从数据库读取图片并保存的方法:

  1. 将图片转换为二进制保存到数据库中,读取时再将二进制转换为图片;
  2. 在服务器本地保存图片,将本地图片路径保存到数据库中,读取时根据路径从本地读取图片。

下面我们逐一介绍这两种方法。

方法一:将图片转换为二进制保存到数据库中

1.1 保存图片到数据库

首先,我们需要将读取到的图片转换成二进制,然后将二进制数据存储到数据库中。在C#中,我们可以使用MemoryStreamBinaryWriter对象将图片转成二进制数据并保存到数据库中。示例代码如下:

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

// 读取本地图片转成二进制后保存到数据库中
public static void SaveImageToDatabase(string imagePath, int id)
{
    byte[] fileData = null;

    // 读取图片,并将二进制数据保存到 fileData 变量中
    using (FileStream fs = new FileStream(imagePath, FileMode.Open))
    {
        using (MemoryStream ms = new MemoryStream())
        {
            byte[] buffer = new byte[2048];
            int bytesRead;
            while ((bytesRead = fs.Read(buffer, 0, buffer.Length)) > 0)
            {
                ms.Write(buffer, 0, bytesRead);
            }
            fileData = ms.ToArray();
        }

        // 将二进制数据保存到数据库中
        using (SqlConnection conn = new SqlConnection("数据连接字符串"))
        {
            conn.Open();
            using (SqlCommand cmd = new SqlCommand("INSERT INTO ImageTable (ID,ImageData) VALUES (@ID,@ImageData)", conn))
            {
                cmd.Parameters.AddWithValue("@ID", id);
                cmd.Parameters.AddWithValue("@ImageData", fileData);
                cmd.ExecuteNonQuery();
            }
        }
    }
}

1.2 从数据库中读取图片

当我们需要从数据库中读取图片时,我们先读取二进制数据,然后再将二进制数据转换为图片。在C#中,我们可以使用BinaryReaderMemoryStream对象将二进制数据转成图片。示例代码如下:

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

// 从数据库中读取二进制数据并转成图片
public static Image GetImageFromDatabase(int id)
{
    byte[] fileData;
    using (SqlConnection conn = new SqlConnection("数据连接字符串"))
    {
        conn.Open();
        using (SqlCommand cmd = new SqlCommand("SELECT ImageData FROM ImageTable WHERE ID=@ID", conn))
        {
            cmd.Parameters.AddWithValue("@ID", id);
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    fileData = (byte[])reader["ImageData"];
                    using (MemoryStream ms = new MemoryStream(fileData))
                    {
                        return Image.FromStream(ms);
                    }
                }
            }
        }
    }
    return null;
}

方法二:在服务器本地保存图片,将本地图片路径保存到数据库中

2.1 保存图片到本地

我们可以在服务器本地建立一个目录用于保存图片,然后将读取到的图片保存到该目录内。在C#中,我们可以使用File.Copy方法实现。示例代码如下:

using System.IO;

// 读取本地图片并保存到本地目录中
public static string SaveImageToLocal(string imagePath, string saveDir)
{
    // 生成保存文件的路径和文件名
    string fileName = Path.GetFileName(imagePath);
    string savePath = Path.Combine(saveDir, fileName);

    // 将文件拷贝到本地目录上
    File.Copy(imagePath, savePath, true);

    return savePath;
}

2.2 保存本地图片路径到数据库中

当我们需要将本地图片路径保存到数据库中时,我们可以使用方法一中介绍的方法将路径转换为二进制数据保存到数据库中。示例代码如下:

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

// 将本地图片路径保存到数据库中
public static void SaveImagePathToDatabase(string imagePath, int id)
{
    // 将路径转换成二进制数据
    byte[] fileData = Encoding.UTF8.GetBytes(imagePath);

    // 将二进制数据保存到数据库中
    using (SqlConnection conn = new SqlConnection("数据连接字符串"))
    {
        conn.Open();
        using (SqlCommand cmd = new SqlCommand("INSERT INTO ImageTable (ID,ImagePathData) VALUES (@ID,@ImagePathData)", conn))
        {
            cmd.Parameters.AddWithValue("@ID", id);
            cmd.Parameters.AddWithValue("@ImagePathData", fileData);
            cmd.ExecuteNonQuery();
        }
    }
}

2.3 从数据库中读取本地图片路径

当我们需要从数据库中读取本地图片路径时,我们可以使用方法一中介绍的方法将二进制数据转换为路径。示例代码如下:

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

// 从数据库中读取本地图片路径
public static string GetImagePathFromDatabase(int id)
{
    byte[] fileData;
    using (SqlConnection conn = new SqlConnection("数据连接字符串"))
    {
        conn.Open();
        using (SqlCommand cmd = new SqlCommand("SELECT ImagePathData FROM ImageTable WHERE ID=@ID", conn))
        {
            cmd.Parameters.AddWithValue("@ID", id);
            using (SqlDataReader reader = cmd.ExecuteReader())
            {
                if (reader.Read())
                {
                    fileData = (byte[])reader["ImagePathData"];
                    return Encoding.UTF8.GetString(fileData);
                }
            }
        }
    }
    return null;
}

这就是从数据库读取图片并保存的两种方法的完整攻略了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#从数据库读取图片并保存的两种方法 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • Entity Framework Core相关包的概念介绍与安装

    下面详细给您介绍一下”Entity Framework Core相关包的概念介绍与安装”的完整攻略。 什么是Entity Framework Core? Entity Framework Core是一个全新的对象关系映射框架,支持.NET Core平台,使用C#语言实现。它能够使开发人员通过操作对象来进行数据库操作,而不是直接使用SQL命令。它具有灵活性和可…

    C# 2023年5月31日
    00
  • 探讨C#中Dispose方法与Close方法的区别详解

    标题:探讨C#中Dispose方法与Close方法的区别详解 正文: 在C#语言中,Dispose方法和Close方法都是用于释放资源的方法。但是Dispose方法和Close方法之间有些细微的区别,需要我们进行详细的讨论和分析。 Dispose方法和Close方法的定义及用途 Dispose方法是在使用完一个对象后,手动释放该对象占用的资源,主要应用于一些…

    C# 2023年5月31日
    00
  • .NET Core 基于Websocket的在线聊天室实现

    .NET Core 基于 Websocket 的在线聊天室实现攻略 在 .NET Core 中,我们可以使用 Websocket 技术来实现在线聊天室。本攻略将介绍如何使用 .NET Core 实现基于 Websocket 的在线聊天室。 步骤 以下是实现基于 Websocket 的在线聊天室的步骤: 创建项目。 使用 Visual Studio 或者 .N…

    C# 2023年5月17日
    00
  • Windows系统常用运行库有哪些?常用系统运行支持库合集(附下载)

    Windows系统常用运行库 什么是运行库 运行库(runtime library)和操作系统是相互配合的。简单来说,运行库包含了操作系统底层API的实现,并且提供给应用程序进行调用。在使用某些应用程序的时,你需要安装相应的运行库才能运行。 为了保证不同应用程序的共用和标准化,Windows系统自带了一些常用的运行库,同时也有一些常用的系统运行支持库可以供下…

    C# 2023年6月3日
    00
  • .NET 6 从0到1使用Docker部署至Linux环境超详细教程

    .NET 6 从0到1使用Docker部署至Linux环境超详细教程 本教程将介绍如何使用Docker将.NET 6应用程序部署到Linux环境中。以下是完整的攻略步骤。 步骤 步骤1:创建.NET 6 Web API项目 首先,需要创建一个.NET 6 Web API项目。可以使用以下命令在命令行中创建一个新的.NET 6 Web API项目: dotne…

    C# 2023年5月17日
    00
  • 玩转-SQL2005数据库行列转换

    玩转-SQL2005数据库行列转换 介绍 SQL2005数据库行列转换是将数据库中的行数据转换为列,或将列数据转换为行。这个功能加强了数据库的数据处理能力,方便了数据分析和可视化工作。本文将详细介绍SQL2005数据库行列转换的使用方法。 实现方法 SQL2005数据库行列转换可以通过使用PIVOT和UNPIVOT等SQL语句实现。其中,PIVOT可以将行数…

    C# 2023年6月8日
    00
  • 详解C# Socket编程笔记

    接下来我会进行详细讲解“详解C# Socket编程笔记”的完整攻略。 1. 引言 Socket编程是计算机网络通信中不可或缺的一部分,它能够实现不同设备间的数据传输。在C#中,大多数网络通信的实现都是通过Socket类实现的。然而,Socket编程并不是一件容易的事情,需要掌握一些底层原理和API调用,本文主要介绍C# Socket编程的基础知识和实现方法。…

    C# 2023年6月8日
    00
  • C#使用ODBC与OLEDB连接数据库的方法示例

    C#使用ODBC与OLEDB连接数据库的方法示例 1. ODBC连接示例 1.1. 确认ODBC连接已创建 在使用ODBC连接数据库之前,需要先确认ODBC连接已经正确创建。在Windows系统中,可以通过控制面板中的“管理工具”>“ODBC数据源(64位)”或“ODBC数据源(32位)”打开ODBC数据源配置窗口,其中可以查看、创建、编辑、删除ODB…

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