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日

相关文章

  • c-为什么%d代表整数?

    在C语言中,%d是用于格式化输出整数的占位符。在C语言中,整数是一种基本数据类型,用于表示整数值。本文将详细讲解为什么%d代表整数,并提供两个示例说明。 为什么%d代表整数? 在C语言中,%d是用于格式化输出整数的占位符。这是因为在C语言中,整数是一种基本数据类型,用于表示整数值。在使用printf函数输出整数时,需要使用%d占位符来指定输出整数的格式。 %…

    other 2023年5月7日
    00
  • 安全性测试入门 (三):CSRF 跨站请求伪造攻击和防御

    安全性测试入门 (三):CSRF 跨站请求伪造攻击和防御 什么是 CSRF 攻击? CSRF(Cross-Site Request Forgery)中文名为跨站请求伪造,也叫 XSRF,是一种常见的Web攻击方式之一。攻击者在受害者不知情的情况下,利用受害者已登录的身份,在受害者不知情的情况下,完成恶意操作,如转账、修改密码、发邮件等等,从而导致安全问题。 …

    其他 2023年3月28日
    00
  • 做好用户生命周期分析与管理的方法

    做好用户生命周期分析与管理对于网站的运营非常重要,可以帮助网站更好地了解用户,提升用户粘性,提升转化率。下面是一些方法和步骤,来帮助我们更好地进行用户生命周期分析与管理。 方法和步骤 步骤1:收集数据 首先,我们需要收集用户相关的数据,包括网站流量、用户行为特征、用户活跃度等等。我们可以通过网站的统计工具(例如Google Analytics等)或第三方数据…

    other 2023年6月27日
    00
  • 正则表达式教程之匹配单个字符详解

    当然!下面是关于\”正则表达式教程之匹配单个字符详解\”的完整攻略: 正则表达式教程之匹配单个字符详解 正则表达式是一种强大的模式匹配工具,用于在文本中查找和匹配特定的模式。在正则表达式中,我们可以使用不同的元字符来匹配单个字符。下面是一些常用的元字符及其含义: .:匹配任意单个字符,除了换行符。 \\w:匹配任意字母、数字或下划线字符。 \\d:匹配任意数…

    other 2023年8月19日
    00
  • cmd copy命令 文件复制

    cmd copy命令 文件复制攻略 在CMD(命令提示符)中,使用copy命令可以将文件从一个位置复制到另一个位置。以下是使用copy命令复制文件的详细步骤和示例。 步骤1:打开CMD 首先需要打开CMD终端窗口。在Windows的开始菜单中,可以找到“命令提示符”或者直接在运行框中输入“cmd”。 步骤2:进入需要操作的目录 在开始操作前,需要先进入需要操…

    other 2023年6月26日
    00
  • vb中datediff函数解释

    VB中DateDiff函数解释 在VB中,DateDiff函数用于计算两个日期之间的时间差。本攻略将详细讲解DateDiff函数的用法和示例说明。 语法 DateDiff(interval, date1, date2[, firstdayofweek[, firstweekofyear]]) 参数说明: interval:必需。要使用的时间间隔类型。可以是以…

    other 2023年5月7日
    00
  • 提高Vector容器的删除效率

    提高Vector容器的删除效率 Vector是C++ STL中最常用的容器之一,它能够动态地增加或缩减数组的大小。然而,删除Vector容器中的元素可能会导致性能问题,特别是当Vector中包含大量元素时。在本文中,我们将介绍如何提高Vector容器的删除效率。 Vector容器的删除操作 Vector容器的删除操作分为两类:删除单个元素和删除一段连续的元素…

    其他 2023年3月28日
    00
  • centos7 设置grub密码及单用户登录实例代码

    CentOS 7 设置 grub 密码及单用户登录 GRUB 是 Linux 中的一款启动管理器,它的主要任务是加载系统内核并启动操作系统。在 Linux 中,如果你拥有 root 权限,那么就相当于拥有了系统的最高权限。如果你的机器是通过 GRUB 单用户方式启动的,那么恶意用户只需要进入单用户模式就可以轻易地获取系统的 root 权限,从而对系统造成安全…

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