mysql数据库能不能加图片_MySQL数据库之插入显示图片

图书馆系统项目需要用到好多图片,并且要求存入到数据库中,对这个特别感兴趣,于是上网查了资料,采用C#语言,进行了具体实现。

说明:

功能:往MySQL数据库插入并显示图片;

验证:执行插入功能后,我把该图片进行了本地的删除,然后执行显示功能,可以显示出来。

数据库该字段类型:longblob

原型部分

fc4f2b57688a6564530e7a6fa01e9a9a.png

数据库

7c98b0da77fe05f83d2ebc318617fa5d.png

引用部分

/*

* 作者:周丽同

* 功能:简单实现往MySQL数据库插入显示图片;

* 日期:2016年6月1日11:32:35

*/

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

using System.IO;

using MySql.Data;

using MySql.Data.MySqlClient;

using System.Drawing.Imaging;

窗体加载部分

private void Form1_Load(object sender, EventArgs e)

{

//获取当前窗体上的picturebox1里面的路径内容或者URL;

bool flag;

flag = ImageWrite(pictureBox1.ImageLocation);

//显示数据库里面存储的图片;

pictureBox2.Image = MapSearchQuery();

}

往MySQL数据库插入图片代码

///

/// 将图片存入到数据库中

///

///

///

public bool ImageWrite(string strImagePath)

{

//FileStream文件流;此部分需要引用:System.IO;

FileStream fs = new System.IO.FileStream(strImagePath, FileMode.Open, FileAccess.Read);

//获得图片字节数组

byte[] byImage = new byte[fs.Length];

fs.Read(byImage, 0, byImage.Length);

fs.Close();

//数据库连接

MySqlConnection conn = new MySqlConnection();

conn.ConnectionString = "Server=localhost;uid=root;password=1;Database=librarysystem;";

//打开关闭连接

try

{

conn.Open();

}

catch

{

conn.Close();

conn.Dispose();

throw new ArgumentException("检索失败啦!");

}

//判断数据库中内部有无记录

MySqlCommand cmd1 = new MySqlCommand();

//根据条件查询是否存在图片

string strQueryCmd = "select * from t_picture";

MySqlCommand cmdQuery = new MySqlCommand(strQueryCmd, conn);

MySqlDataReader dataReader = cmdQuery.ExecuteReader();

bool flag1 = dataReader.Read();

//关闭连接

cmd1.Dispose();

conn.Close();

conn.Dispose();

//此处如果涉及到两次对数据库的访问,一定要记得关闭上次的连接,然后再进行接下来对数据库的操作;

try

{

conn.Open();

}

catch

{

conn.Close();

conn.Dispose();

throw new ArgumentException("检索失败啦!");

}

//执行更新或插入操作操作

MySqlCommand cmd = new MySqlCommand();

if (flag1) //flag1是上面操心操作的结果

{

cmd.CommandText = "update t_picture set picture=@picture";

}

else

{

cmd.CommandText = "insert into t_picture(picture) values (@picture)";

}

cmd.CommandType = CommandType.Text;

cmd.Parameters.Add("@picture", MySqlDbType.LongBlob);

cmd.Parameters[0].Value = byImage;

cmd.Connection = conn;

int affecteRows = 0;//初始化数据库操作的结果;

try

{

affecteRows = cmd.ExecuteNonQuery();//返回对数据库的执行结果;

}

catch

{

affecteRows = -1;

}

//关闭连接等

cmd.Dispose();

conn.Close();

conn.Dispose();

if (affecteRows <= 0)

{

MessageBox.Show("保存失败!");

return false;

}

else

{

MessageBox.Show("保存成功!");

return true;

}

}

查询MySQL数据库存储的图片,并显示代码

///

/// 对MySQL数据库图片进行显示

///

///

public Image MapSearchQuery()

{

//声明图片数组

byte[] imageByteResulet;

imageByteResulet = null;

//连接数据库

MySqlConnection conn = new MySqlConnection();

conn.ConnectionString = "Server=localhost;Uid=root;Password=1;Database=librarysystem;";

//对数据库进行开关闭

try

{

conn.Open();

}

catch

{

conn.Close();

conn.Dispose();

throw new ArgumentException("图片加载超时啦!");

}

//执行查询操作(可以根据具体条件下的图片进行查询显示)

string strQueryCmd = "select * from t_picture";

MySqlCommand cmd = new MySqlCommand(strQueryCmd, conn);

MySqlDataReader dataReader = null;

try

{

dataReader = cmd.ExecuteReader();

}

catch

{

dataReader.Dispose();

cmd.Dispose();

conn.Close();

conn.Dispose();

throw new ArgumentException("图片加载超时啦!");

}

//声明接收返回值图片

Image imageResulet;

if (dataReader.Read())

{

//获取数据库中图片字节数组

imageByteResulet = new byte[dataReader.GetBytes(0, 0, null, 0, int.MaxValue)];

dataReader.GetBytes(0, 0, imageByteResulet, 0, imageByteResulet.Length);

将图片字节数组加载入到缓冲流

byte[] imageByte = imageByteResulet;

MemoryStream imageStream = new MemoryStream(imageByte);

从缓冲流生成图片

imageResulet = Image.FromStream(imageStream, true);

return imageResulet;

}

else

{

imageResulet = null;

}

dataReader.Dispose();

cmd.Dispose();

conn.Close();

conn.Dispose();

return imageResulet;

}

个人感觉这个方法不是最简单的,希望路过的大神,提出宝贵意见。

感谢您的宝贵时间···

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园整体解决方案是响应国家教育信息化政策,结合教育改革和技术创新的产物。该方案以物联网、大数据、人工智能和移动互联技术为基础,旨在打造一个安全、高效、互动且环保的教育环境。方案强调从数字化校园向智慧校园的转变,通过自动数据采集、智能分析和按需服务,实现校园业务的智能化管理。 方案的总体设计原则包括应用至上、分层设计和互联互通,确保系统能够满足不同用户角色的需求,并实现数据和资源的整合与共享。框架设计涵盖了校园安全、管理、教学、环境等多个方面,构建了一个全面的校园应用生态系统。这包括智慧安全系统、校园身份识别、智能排课及选课系统、智慧学习系统、精品录播教室方案等,以支持个性化学习和教学评估。 建设内容突出了智慧安全和智慧管理的重要性。智慧安全管理通过分布式录播系统和紧急预案一键启动功能,增强校园安全预警和事件响应能力。智慧管理系统则利用物联网技术,实现人员和设备的智能管理,提高校园运营效率。 智慧教学部分,方案提供了智慧学习系统和精品录播教室方案,支持专业级学习硬件和智能化网络管理,促进个性化学习和教学资源的高效利用。同时,教学质量评估中心和资源应用平台的建设,旨在提升教学评估的科学性和教育资源的共享性。 智慧环境建设则侧重于基于物联网的设备管理,通过智慧教室管理系统实现教室环境的智能控制和能效管理,打造绿色、节能的校园环境。电子班牌和校园信息发布系统的建设,将作为智慧校园的核心和入口,提供教务、一卡通、图书馆等系统的集成信息。 总体而言,智慧校园整体解决方案通过集成先进技术,不仅提升了校园的信息化水平,而且优化了教学和管理流程,为学生、教师和家长提供了更便捷、个性化的教育体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值