当前位置: 首页 > news >正文

需要做网站的公司青岛胶州网站建设

需要做网站的公司,青岛胶州网站建设,wordpress手机端菜单被挤到第二行,绵阳网站建设网站建设版权声明#xff1a;本文为博主原创文章#xff0c;转载请在显著位置标明本文出处以及作者网名#xff0c;未经作者允许不得用于商业目的。 需要北风数据库的请留言自己的信箱。 北风数据库中#xff0c;类别表的图片字段在【数据表视图】中显示为Bitmap Image#xff1…版权声明本文为博主原创文章转载请在显著位置标明本文出处以及作者网名未经作者允许不得用于商业目的。 需要北风数据库的请留言自己的信箱。 北风数据库中类别表的图片字段在【数据表视图】中显示为Bitmap Image 图19-30 图片字段的数据显示为Bitmap Image 它是一个OLE对象实际就是一个字节数组 图19-30 图片字段在设计视图中为OLE对象 双击某一个类别的Bitmap Image 可以打开画图查看图片 图19-32 双击默认会使用画图打开 对于Access数据库中保存的二进制数据应该使用OleDbCommand的ExecuteReader方法加参数SequentialAccess来打开获得对应的OleDbDataReader对象。 SequentialAccess不会加载整行而是使 OleDbDataReader将数据作为流来加载。然后可以使用GetBytes或GetChars方法来指定开始读取操作的字节位置以及正在返回的数据的有限的缓冲区大小。尽管无需读取每个字段但是需要按照字段的返回顺序读取它们。 一旦已经读过返回的数据流中某个位置的内容就不能再从 OleDbDataReader中读取该位置或该位置之前的数据。 【例 19.13】【项目code19-013】读取数据表中的图片。 根据BMP文件的格式可知BMP前两个字节是BMP文件头为BM对应的十六进制值为 42 4D由于北风数据库中的数据表使用的是OLE对象方式保存图片所以它在BMP数据基础上增加了其它的数据。在获得图片字段数据后只需要查找42 4D开始的位置获得开始位置之后的数据就可以还原这个BMP图像了。 具体的代码如下 ……代码略 private void Form1_Load(object sender, EventArgs e) { //建立OleDbConnection对象实例 conn new OleDbConnection(); //设置OleDbConnection的连接字符串 conn.ConnectionString Provider Microsoft.Jet.OLEDB.4.0;data sourceC:\\lessons\\Northwind.mdb;; //打开数据连接 conn.Open(); pictureBox1.SizeMode PictureBoxSizeMode.StretchImage; OleDbCommand command new OleDbCommand(); command.CommandText select 类别名称 from 类别; command.Connection conn; //从类别表中获得类别名称并增加到ComboBox1中 OleDbDataReader reader command.ExecuteReader(); if (reader.HasRows) while (reader.Read()) comboBox1.Items.Add(reader.GetString(0)); reader.Close(); comboBox1.DropDownStyle ComboBoxStyle.DropDownList; } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { OleDbCommand command new OleDbCommand(); command.CommandText select 图片 from 类别 where 类别名称 comboBox1.Text ; command.Connection conn; //使用OleDbDataReader读取图片使用SequentialAccess模式 OleDbDataReader reader command.ExecuteReader(CommandBehavior.SequentialAccess CommandBehavior.SingleResult CommandBehavior.SingleRow); try { //存放从字段获得的数据 byte[] fieldsData new byte[] { }; //每次从字段读取的字节数组 byte[] buffer; //每次从字段读取的字节数组的长度 int bufferLength 1024; buffer new byte[bufferLength]; //每次使用OleDbDataReader的GetBytes方法时返回实际读取字节数的长度 long readLength; int pos 0; //开始读取 reader.Read(); //读取数据数据较小时可以使用 fieldsData (byte[]) reader[0]; 或者将上一句代码替换为 循环读取数据数据较大的时候使用 //while (true) //{ //    //使用GetBytes方法读取数据 //    readLength reader.GetBytes(0, pos * bufferLength, buffer, 0, bufferLength); //    int imgDataLength; //    imgDataLength fieldsData.Length; //    //保留fieldsData原来的数据基础上扩大fieldsData的大小 //    Array.Resize(ref fieldsData,imgDataLength (int)readLength); //    //将新读取的数据拷贝到fieldsData //    Array.Copy(buffer, 0, fieldsData, imgDataLength, readLength); //    //如果实际读取数据的长度小于设定的长度那么表示已经读取完毕退出循环 //    if (readLength bufferLength) //        break; //    pos 1; //} //判断是否包含Bmp的标志 BM即对应的十六进制值为 42 4D int bmpSign -1; for(int i 0; i fieldsData.Length - 1;i) { if( fieldsData[i] 0x42 fieldsData[i 1] 0x4D) { bmpSign i; break; } } if(bmpSign -1) { MessageBox.Show(不是有效的图片文件); return; } //从fieldsData中提取出图像的数据保存到imgData byte[] imgData new byte[fieldsData.Length - bmpSign]; Array.Copy(fieldsData, bmpSign, imgData, 0, imgData.Length); //使用字节数组初始化一个MemoryStream对象 System.IO.MemoryStream ms new System.IO.MemoryStream(imgData); //从流获得一个image对象 Image img Image.FromStream(ms); pictureBox1.Image img; //关闭流 ms.Close(); } catch( Exception ex) { MessageBox.Show(ex.Message); } finally { //关闭OleDbDataReader reader.Close(); } } 运行结果如下图所示 图19-33 显示类别图片 注意以上操作是比较常见读取二进制数据值的一种操作还可以使用以下代码 fieldsData (byte[]) reader[0]; 替换while { }部分的代码。系统将获得指定字段里面的数据并自动转换为相应的数据类型的值。以上代码更简洁可以在知道字段对应数据较少的情况下使用以上代码。 【例 19.14】【项目code19-014】向数据表中写入图片。 private void btnChooseImage_Click(object sender, EventArgs e) { OpenFileDialog ofd new OpenFileDialog(); ofd.Filter 所有图片|*.png;*.jpg;*.gif; if (ofd.ShowDialog() ! DialogResult.OK) return; picType.Image Image.FromFile(ofd.FileName); } private void btnAdd_Click(object sender, EventArgs e) { //检查数据是否符合要求 if (txtType.Text.Trim() ) return; if (txtTypeInfo.Text.Trim() ) return; if (picType.Image null) return; OleDbCommand odcommand new OleDbCommand(); //更新数据表的SQL语句 odcommand.CommandText insert into 类别(类别名称,说明,图片) values(typename,typeinfo,imgType); odcommand.Connection conn; //添加相应的数据参数 odcommand.Parameters.Add(typename, OleDbType.VarChar); odcommand.Parameters[typename].Value txtType.Text; odcommand.Parameters.Add(typeinfo, OleDbType.VarChar); odcommand.Parameters[typeinfo].Value txtTypeInfo.Text; //按照数据表中类别的图片大小172*120建立图片 Bitmap bmp new Bitmap(172, 120); Graphics g Graphics.FromImage(bmp); g.DrawImage(picType.Image, new Rectangle(0, 0, 172, 120), new Rectangle(0, 0, picType.Image.Width, picType.Image.Height), GraphicsUnit.Pixel); g.Dispose(); System.IO.MemoryStream ms new System.IO.MemoryStream(); //将图片以bmp格式保存到内存流中 bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp); //从内存流将数据保存到字节数组 byte[] imgBuff new byte[ms.Length]; ms.Position 0; imgBuff ms.ToArray(); ms.Close(); //添加数据参数这里使用LongVarBinary类型 odcommand.Parameters.Add(imgType, OleDbType.LongVarBinary); //对应的数据为字节数组 odcommand.Parameters[imgType].Value imgBuff; //执行ExecuteNonQuery odcommand.ExecuteNonQuery(); } 运行结果如下图所示 图19-34 向类别表中新增数据 由于这里只是保存的图片本身数据而不是像类别表中图片字段是一个OLE对象还添加有附加数据所以新增的图片数据不能像原有数据一样可以被画图程序打开。但是使用【例 19.13】中的代码是可以正确显示图片的。 学习更多vb.net知识请参看vb.net 教程 目录 学习更多C#知识请参看C#教程 目录
http://www.hkea.cn/news/14416952/

相关文章:

  • 个人未授权做的网站统计wordpress访问量
  • 网站建设指南wordpress跳转指定模板
  • 网站的基本要素网站建设公司全国排行
  • 电商网站设计公司力推亿企邦网站建设与运营
  • 亚马逊网站建设案例分析做网站什么价格
  • 福建个人网站备案滁州网站建设信息推荐
  • 现在有没有免费的网站松岗怎么做企业网站设计
  • 查icp备案是什么网站深圳网站建设jm3q
  • 哪些网站是用wordpress搭建的浙江网站制作公司
  • 广东网站快速备案微信手机版网站建设
  • 中国品牌网站设计做网站属于什么工作
  • 嘉兴市建设教育网站最近三天的新闻大事摘抄
  • 怎么用2013做网站磁力链搜索引擎入口
  • p2p网站建设小微金融网站怎么优化
  • 5000个网站资源做外链网站建设选哪个
  • 建立网站外链常用的渠道有哪些移动互联网50+互联网
  • 网站建设需要哪些流程百度云自助建站
  • 王者荣耀网站建设的步骤深圳网站关键词优化推广
  • 怎么注销建设银行网站用户惠州高端网站建设服务
  • 淘宝客做二级域名网站免费游戏打开就能玩
  • 网站是怎么建成的渭南微信小程序网站建设
  • 济南网站建设有限公司嘉兴做网站优化价格
  • 网站修改建设黑龙江省建设教育信息网网站
  • 自己可以做电子商务网站网站不收录 域名问题
  • 永州网站开发微信公众号里的网站怎么做的
  • 毕业设计网站开发流程图wordpress 完整模板
  • 北京学设计去哪个网站好wordpress 邀请注册年度报告
  • 高端前端开发西安官网seo公司
  • 网站设计 企业 济南怎么做网站源代码
  • 哪个浏览器可以看禁止访问的网站wordpress分类列表显示