c#winformdevexpress上传图片到数据库【转】

C# Winform DevExpress上传图片到数据库【转】

在C# Winform开发中,经常需要使用图片作为界面元素展示,而当图片数量和大小增加时,需要考虑将图片存储到数据库中,以便在不同计算机上共享。本文将介绍使用DevExpress控件库完成图片上传的方法,同时也提供使用普通Winform的方法供参考。

使用DevExpress上传图片到MySQL数据库

环境准备

  1. 安装并注册DevExpress控件库;
  2. 安装MySql.Data;
  3. 在MySql中创建名为test的数据库,并创建名为imgs的表,表结构如下:
CREATE TABLE `imgs` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `img` longblob NOT NULL COMMENT 'image blob',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='img data';

项目配置

  1. 在项目中添加DevExpress控件库的引用;
  2. 在窗体中添加一个PictureEdit控件和一个SimpleButton控件;
  3. 在SimpleButton的Click事件中添加以下代码:
// 获取图片文件路径
var files = new OpenFileDialog { Filter = "Image files (*.jpg, *.jpeg, *.png, *.bmp)|*.jpg; *.jpeg; *.png; *.bmp" };
if (files.ShowDialog() != DialogResult.OK)
{
    return;
}

// 读取图片文件
var img = Image.FromFile(files.FileName);

// 将图片转换为二进制数据
var ms = new MemoryStream();
img.Save(ms, img.RawFormat);
ms.Flush();
var imgByte = ms.GetBuffer();

// 将图片数据保存到数据库
using var connection = new MySqlConnection("Server=localhost;User=root;Password=123456;Database=test;");
const string insertSql = "INSERT INTO `imgs`(`img`) VALUES (@img);";
using var command = new MySqlCommand(insertSql, connection);
command.Parameters.Add(new MySqlParameter("@img", MySqlDbType.LongBlob) { Value = imgByte });
connection.Open();
command.ExecuteNonQuery();

测试运行

运行项目并尝试上传一张图片,即可在数据库中验证图片是否成功保存。

使用Winform上传图片到MySQL数据库

环境准备

  1. 安装MySql.Data;
  2. 在MySql中创建名为test的数据库,并创建名为imgs2的表,表结构如下:
CREATE TABLE `imgs2` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'id',
  `img` longblob NOT NULL COMMENT 'image blob',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='img data';

项目配置

  1. 在窗体中添加一个PictureBox控件和一个Button控件;
  2. 在Button的Click事件中添加以下代码:
// 获取图片文件路径并加载到PictureBox中
var files = new OpenFileDialog { Filter = "Image files (*.jpg, *.jpeg, *.png, *.bmp)|*.jpg; *.jpeg; *.png; *.bmp" };
if (files.ShowDialog() != DialogResult.OK)
{
    return;
}
pictureBox1.ImageLocation = files.FileName;

// 读取图片文件
var img = Image.FromFile(files.FileName);

// 将图片转换为二进制数据
var ms = new MemoryStream();
img.Save(ms, img.RawFormat);
ms.Flush();
var imgByte = ms.GetBuffer();

// 将图片数据保存到数据库
using var connection = new MySqlConnection("Server=localhost;User=root;Password=123456;Database=test;");
const string insertSql = "INSERT INTO `imgs2`(`img`) VALUES (@img);";
using var command = new MySqlCommand(insertSql, connection);
command.Parameters.Add(new MySqlParameter("@img", MySqlDbType.LongBlob) { Value = imgByte });
connection.Open();
command.ExecuteNonQuery();

测试运行

运行项目并尝试上传一张图片,即可在数据库中验证图片是否成功保存。

总结

本文介绍了使用DevExpress控件库和普通Winform实现图片上传到MySQL数据库的方法,虽然使用DevExpress需要进行一些控件库的安装和注册,但是其用户体验和开发效率都相对较高。而普通Winform的实现方法则更直观易懂,适合新手入门使用。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c#winformdevexpress上传图片到数据库【转】 - Python技术站

(0)
上一篇 2023年3月29日
下一篇 2023年3月29日

相关文章

  • 遥感生态指数(rsei)——图像预处理

    以下是关于“遥感生态指数(RSEI)——图像预处理”的完整攻略,包含两个示例。 遥感生态指数(RSEI)——图像预处理 遥感生态指数(RSEI)是一种用于评估生态系统健康状况的指数。在计算RSEI之前,我们需要对遥感图像进行预处理。以下是关于如何进行图像预处理的详细攻略。 1. 图像校正 在进行图像预处理之前,我们需要对遥感图像进行校正。以下是一个示例: i…

    other 2023年5月9日
    00
  • java实现递归文件列表的方法

    下面是Java实现递归文件列表的方法的完整攻略: 一、方法介绍 递归遍历文件列表是在程序开发中比较常用的操作之一,可以批量处理文件、统计文件数量等。Java实现递归文件列表的方法主要是通过递归算法来实现,它可以实现深度遍历或广度遍历遍历文件列表。在递归算法中,我们需要考虑文件夹与文件的分类遍历。 二、递归遍历文件列表的具体实现过程 递归遍历文件列表的方法需要…

    other 2023年6月27日
    00
  • java-bigdecimal减法 结果为负

    在Java中,使用BigDecimal类进行数值计算时,可能会出现减法结果为负数的情况。这是由于BigDecimal类的精度和舍入模式的设置不当所导致的。本文详细介绍何解决BigDecimal减法结果为负数的问题,并提供两个示例说明。 问题描述 在Java中,使用BigDecimal`类减法计算时,可能会出现结果为负数的情况。例如,以下代码: BigDeci…

    other 2023年5月7日
    00
  • Element的穿梭框数据量大时点击全选卡顿的解决方案

    下面是详细的攻略: 问题背景 Element UI是一款非常优秀的Vue.js组件库,其中提供了穿梭框(shuttle)组件,是一个方便用户进行多选操作的组件。但是,在数据量较大的情况下,在穿梭框中勾选全选时,会导致卡顿的现象,影响用户体验。 原因分析 穿梭框勾选全选的时候,会遍历全部的数据,进行勾选操作,当数据量较大时,操作次数过多,导致卡顿现象。 解决方…

    other 2023年6月26日
    00
  • office2007怎么加载com加载项?

    下面是“office2007怎么加载com加载项”的完整攻略及示例说明。 一、什么是COM加载项? COM加载项(COM Add-in),也称COM插件,是一种可以在 Microsoft Office 系列软件中扩展功能的方式。可以用COM加载项实现自定义的命令、菜单、工具栏、对话框、功能区等,并可与其他 Office 应用程序和 Web 应用程序集成使用。…

    other 2023年6月25日
    00
  • 如何让Nginx支持中文文件名具体设置步骤

    当文件路径或名称中包含特殊字符(如中文、空格等)时,Nginx可能会出现访问失败的问题。为了使Nginx支持中文文件名,需要在配置文件中进行如下设置: 修改配置文件 在Nginx的配置文件中,需要修改http节点下的server节点。找到server节点中的charset设置项,将其设置为utf-8,可以保证nginx可以正确处理中文字符。 同时,在serv…

    other 2023年6月26日
    00
  • 用DOS命令查QQ好友IP地址

    用DOS命令查QQ好友IP地址攻略 如果你想使用DOS命令来查找QQ好友的IP地址,可以按照以下步骤进行操作: 打开命令提示符:点击开始菜单,搜索并打开“命令提示符”或者“CMD”。 运行netstat命令:在命令提示符窗口中,输入netstat -n命令并按下回车键。这个命令将显示当前计算机与其他计算机之间的网络连接信息。 查找QQ的IP地址:在netst…

    other 2023年7月30日
    00
  • 手机安卓系统设置静态IP地址的方法(三种方法)

    当你使用安卓手机时,你可以通过以下三种方法来设置静态IP地址: 方法一:通过Wi-Fi设置 打开手机的设置菜单,找到并点击“Wi-Fi”选项。 找到你当前连接的Wi-Fi网络,并长按该网络的名称,然后选择“修改网络”或类似选项。 在弹出的窗口中,找到并点击“高级选项”或类似选项。 在高级选项中,找到并点击“IP设置”或类似选项。 在IP设置中,选择“静态”选…

    other 2023年7月30日
    00
合作推广
合作推广
分享本页
返回顶部