C# Winform DevExpress上传图片到数据库【转】
在C# Winform开发中,经常需要使用图片作为界面元素展示,而当图片数量和大小增加时,需要考虑将图片存储到数据库中,以便在不同计算机上共享。本文将介绍使用DevExpress控件库完成图片上传的方法,同时也提供使用普通Winform的方法供参考。
使用DevExpress上传图片到MySQL数据库
环境准备
- 安装并注册DevExpress控件库;
- 安装MySql.Data;
- 在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';
项目配置
- 在项目中添加DevExpress控件库的引用;
- 在窗体中添加一个PictureEdit控件和一个SimpleButton控件;
- 在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数据库
环境准备
- 安装MySql.Data;
- 在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';
项目配置
- 在窗体中添加一个PictureBox控件和一个Button控件;
- 在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技术站