当前位置:Gxlcms > 数据库问题 > C#读写图片文件到Access数据库中

C#读写图片文件到Access数据库中

时间:2021-07-01 10:21:17 帮助过:33人阅读

Access数据库连接字符串 const string conStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=D:\MyAccessFile\MyPicte.accdb;Persist Security Info=False"; string pic = string.Empty; //保存图片转化字符串 //选择图片并写入数据库中 private void button1_Click(object sender, EventArgs e) { //打开文件对话框选择图片文件 OpenFileDialog openfile = new OpenFileDialog(); openfile.Title = "请选择图片"; openfile.Filter="图片(*.jpg;*.bmp;*.png)|*.jpeg;*.jpg;*.bmp;*.png|AllFiles(*.*)|*.*"; if (DialogResult.OK != openfile.ShowDialog()) return; try { //显示图片到PictureBox控件中 Bitmap bmp = new Bitmap(openfile.FileName); pictureBox1.Image = bmp; pictureBox1.SizeMode = PictureBoxSizeMode.Zoom; //把图片转化成二进制,最后转成字符串 MemoryStream ms = new MemoryStream(); bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg); byte[] arr = new byte[ms.Length]; ms.Position = 0; ms.Read(arr, 0, (int)ms.Length); ms.Close(); pic = Convert.ToBase64String(arr); //把Byte字节数组转成字符串 //pic = ImageToString(openfile.FileName);//自己写的图片转字符串的函数封装 //写入数据库中 OleDbConnection conn = new OleDbConnection(conStr); string sql = $"insert into mTable (pictName,pictText) values (‘{openfile.FileName}‘,‘{pic}‘)"; OleDbCommand cmd = new OleDbCommand(sql, conn); conn.Open(); int res = cmd.ExecuteNonQuery(); if (res > 0) { MessageBox.Show("图片保存成功!"); } conn.Close(); conn.Dispose(); } catch (Exception) { throw; } }

2。从数据库中读取图片文件

  1. <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">从数据库中读取图片,并显示在PictureBoc控件中</span>
  2. <span style="color: rgba(0, 0, 255, 1)">private</span> <span style="color: rgba(0, 0, 255, 1)">void</span> button2_Click(<span style="color: rgba(0, 0, 255, 1)">object</span><span style="color: rgba(0, 0, 0, 1)"> sender, EventArgs e)
  3. {
  4. </span><span style="color: rgba(0, 0, 255, 1)">int</span> id = <span style="color: rgba(128, 0, 128, 1)">6</span>;<span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">要读取的图片在数据库中的编号,因为是测试就手动修改要读取的编号</span>
  5. <span style="color: rgba(0, 0, 255, 1)">try</span><span style="color: rgba(0, 0, 0, 1)">
  6. {
  7. OleDbConnection conn </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> OleDbConnection(conStr);
  8. </span><span style="color: rgba(0, 0, 255, 1)">string</span> sql = $<span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(128, 0, 0, 1)">select pictText from mTable where ID={id}</span><span style="color: rgba(128, 0, 0, 1)">"</span><span style="color: rgba(0, 0, 0, 1)">;
  9. OleDbCommand cmd </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> OleDbCommand(sql, conn);
  10. conn.Open();
  11. OleDbDataAdapter oda </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> OleDbDataAdapter(cmd);
  12. DataTable dt </span>= <span style="color: rgba(0, 0, 255, 1)">new</span><span style="color: rgba(0, 0, 0, 1)"> DataTable();
  13. oda.Fill(dt);
  14. conn.Close();
  15. conn.Dispose();
  16. </span><span style="color: rgba(0, 0, 255, 1)">if</span>(dt.Rows.Count><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">)
  17. {
  18. pic </span>= dt.Rows[<span style="color: rgba(128, 0, 128, 1)">0</span>][<span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">].ToString();
  19. </span><span style="color: rgba(0, 0, 255, 1)">if</span> (!<span style="color: rgba(0, 0, 255, 1)">string</span><span style="color: rgba(0, 0, 0, 1)">.IsNullOrEmpty(pic))
  20. {
  21. </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">把string转成字节数组</span>
  22. <span style="color: rgba(0, 0, 255, 1)">byte</span>[] imageBytes =<span style="color: rgba(0, 0, 0, 1)"> Convert.FromBase64String(pic);
  23. </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">把字节读取到内存</span>
  24. MemoryStream memoryStream = <span style="color: rgba(0, 0, 255, 1)">new</span> MemoryStream(imageBytes, <span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, imageBytes.Length);
  25. memoryStream.Write(imageBytes, </span><span style="color: rgba(128, 0, 128, 1)">0</span><span style="color: rgba(0, 0, 0, 1)">, imageBytes.Length);
  26. </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">字节数组转成Image对象</span>
  27. Image image =<span style="color: rgba(0, 0, 0, 1)"> Image.FromStream(memoryStream);
  28. </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">Image image = StringToImage(pic);
  29. </span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">显示图片到控件中</span>
  30. <span style="color: rgba(0, 0, 255, 1)">this</span>.pictureBox2.SizeMode =<span style="color: rgba(0, 0, 0, 1)"> PictureBoxSizeMode.Zoom;
  31. </span><span style="color: rgba(0, 0, 255, 1)">this</span>.pictureBox2.Image =<span style="color: rgba(0, 0, 0, 1)"> image;
  32. }
  33. }
  34. }
  35. </span><span style="color: rgba(0, 0, 255, 1)">catch</span><span style="color: rgba(0, 0, 0, 1)"> (Exception)
  36. {
  37. </span><span style="color: rgba(0, 0, 255, 1)">throw</span><span style="color: rgba(0, 0, 0, 1)">;
  38. }
  39. }</span>

学习成果展示:

技术图片

 

 

好了今天就学到这了。

 

C#读写图片文件到Access数据库中

标签:orm   ros   insert   gre   rom   byte   isp   sage   span   

人气教程排行