软件问答

软件问答

印刷咨询电话:021-6306-3076 / 138-1621-1622

当前位置:网站首页 > 印刷问答 > 软件问答 > 正文

数据库如何存取图片?

吉印通 2021-05-30 251

数据库存图片的方式以下两种:

在数据库中存储图片文件的文件名或存储路径(本地路径或者网络路径)这是最常用的方式,即是将图片的存储的完整路径或文件名以字符串的方式存入到数据库中,读取效率高、而且便于维护pic文件。实现的方法也比较简单,拿最常见的使用场景来说吧,比如用户注册时,需要他上传了一张照片,常见做法就是使用文件控件FileUpload让用户选择电脑的上面的图片,然后将其选择的图片所在的路径及文件名获取,将文件上传后同时将文件名保存到数据库对应的表中,显示图片时只需要从数据库中获取文件名并构造完整路径即可。

ASP.NET

代码如下:

//获取FileUpload控件选取图片后的文件路径

strng filepath=FileUpload1.PostedFile.FileName;

//获取图片文件名,即从图片路径字符串中获取最后\\的那段

string filename=filepath.Substring(filepath.LastIndexOf("\\")+1);

//然后执行文件上传pic文件,将文件保存到服务器指定的目录,如在程序目录下建立一个PIC文件夹保存文件

FileUpload1.PostedFile.SaveAs(Server.MapPath("PIC/")+filename);

上传成功后,将文件名filename字符串插入数据库即可pic文件。

显示时将filename从数据取出,用Image1.ImageUrl="PIC/"+filename 显示pic文件。

将图片文件转为二进制文件流保存到数据库,显示时再二进制转为文件这种方式很少用,因为图片包含的信息比较多,转为二进制后存储的内容大,占用空间,而且需要转换,费时好资源pic文件。

保存图片的 核心代码如下:

//文件路径

string picturePath = @"D:\1.jpg";

//创建FileStream对象

FileStream fs = new FileStream(picturePath, FileMode.Open, FileAccess.Read);

//声明Byte数组

Byte[] mybyte = new byte[fs.Length];

//读取数据

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

fs.Close();

//转换成二进制数据 mybyte 保存到数据库

SqlParameter prm = new SqlParameter

("@blobdata", SqlDbType.VarBinary, mybyte.Length, ParameterDirection.Input, false, 0, 0, null, DataRowVersion.Current, mybyte);

command.Parameters.Add(prm);

//打开数据库连接

connection.Open();

command.ExecuteNonQuery();

connection.Close();

读取图片的核心代码如下:

//打开数据库连接

connection.Open();

//创建SQL语句

string sql = "select BLODID,BLOBData from Images order by BLODID";

//创建SqlCommand对象

SqlCommand command = new SqlCommand(sql, connection);

//创建DataAdapter对象

SqlDataAdapter dataAdapter = new SqlDataAdapter(command);

//创建DataSet对象

DataSet dataSet = new DataSet();

dataAdapter.Fill(dataSet, "BLOBTest");

int c = dataSet.Tables["BLOBTest"].Rows.Count;

if (c > 0)

Byte[] mybyte = new byte[0];

mybyte = (Byte[])(dataSet.Tables["BLOBTest"].Rows[c - 1]["BLOBData"]);

MemoryStream ms = new MemoryStream(mybyte);

//显示图片

pictureBox1.Image = Image.FromStream(ms);

connection.Close();

(●'◡'●)~欢迎评论留言解答~(●'◡'●)

相关推荐

  • 【上海KT板写真印刷】|写真kt板与kt板区别

    【上海KT板写真印刷】|写真kt板与kt板区别

    1、更多商机对接请登录手机网站联系时,请说是在爆料一经采用将支付*0元爆料一经采用将支付*0元爆料一经采用将支。2、欢迎前来吉印通网实力旺铺,选购上海同城广告设计展会写真喷绘KT板画面展板制作安装展览展会服务,该商品由上海冉岚广告店铺...

    2022-05-17 28

  • 大兴波普公社附近做企业宣传册公司 专业企业画册设计公司

    大兴波普公社附近做企业宣传册公司 专业企业画册设计公司

      提供专业设计、品牌设计,提供一流服务,公司本着质量为天诚信是金效率为要创新是魂的经营理念。  供应大兴LOGO设计、大兴VI设计公司、大兴企业宣传册设计公司、大兴企业形象设计、大兴企业视觉识别系统设计、logo设计、广告设计、画册设...

    2022-03-02 723

  • 牛皮纸是用来画什么的

    牛皮纸是用来画什么的

    牛皮纸被应用于化工、机械等各行业,特别广泛应用于食品包装行业。牛皮纸用途:牛皮纸广泛适用于各种包装用品,纸袋、手提袋牛皮纸、彩盒、礼品盒牛皮纸、印刷牛皮纸、印刷牛皮纸、笔记本牛皮纸、作业本牛皮纸、信封专用牛皮纸。食品的包装要遵循方便、便...

    2022-02-16 1086

  • 疫情期间一直宅在家里,今天翻开相册惊奇的发现……

    疫情期间一直宅在家里,今天翻开相册惊奇的发现……

      这段时间一直宅在家里,也不能去学校,翻看以前的相册,看着那些自己曾经记录下来的美好画面,突然想起自己许久没有拍照了呢。  这些都是学校的角角落落  平时大家都不会注意到的地方...

    2022-02-06 637

  • Adobe Illustrator CS6怎样标注尺?

    Adobe Illustrator CS6怎样标注尺?

    1、在AI的界面上选中窗口,然后在子菜单选择‘变换’,弹出的界面就会显示图形的尺寸。2、用快捷键shift+F8,弹出的也是‘变换’的界面。打开后不要关掉了,下次再打开软件还会存在的。3、若是AI界面的图纸大小,一般是A4纸210*29...

    2022-01-29 1044

  • 祭海文化节渐成北海诠释海洋文化的蔚蓝名片(转载)

    祭海文化节渐成北海诠释海洋文化的蔚蓝名片(转载)

      3月8日,农历二月初二,是民间俗称“龙抬头”的日子。和往年一样,北海经济开发区群众聚集在脊岭岛龙王庙和岔尖渔村码头,分别用传统方式和民间文艺祭海祈福,感恩大海的馈赠,祈愿新一年风调雨顺。  上午8时许,在脊岭岛龙王庙,脊岭岛祭海仪式暨...

    2022-01-19 244

QQ客服咨询电话手机扫码留言评论联系我们 帮助中心返回顶部
02163063076客服电话
13816211622业务专线