A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 冯华亮 中级黑马   /  2012-8-6 20:28  /  1474 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

昨天看老师关于数据库二进制数据存储视频之后,自己动手了写了一个简版图片存储。分享交流一下!网上关于图片存储写法过于繁杂。我简化了一下。代码如下!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Data.SqlClient;
  10. using System.IO;
  11. namespace 图片存取
  12. {
  13.     public partial class Form1 : Form
  14.     {
  15.         
  16.         public Form1()
  17.         {
  18.             InitializeComponent();
  19.         }
  20.         SqlConnection conn;
  21.         SqlDataReader myreader;
  22.         byte[] photo = null;
  23.         #region //定义一个静态变量区
  24.       public const string conString = "server=.;database=mis4;uid=sa;pwd=";
  25.         #endregion
  26.         private void button1_Click(object sender, EventArgs e)
  27.         {

  28.             SqlCommand cmd1 = new SqlCommand("insert image values(@image_id,@image_tupian)", conn);
  29.             cmd1.Parameters.Add("@image_id", SqlDbType.Int, 4).Value = textBox1.Text;
  30.             cmd1.Parameters.Add("@image_tupian", SqlDbType.Image, photo.Length).Value = photo;
  31.             conn.Open();
  32.             cmd1.ExecuteNonQuery();
  33.             conn.Close();
  34.            
  35.            
  36.         }

  37.         private void button2_Click(object sender, EventArgs e)
  38.         {
  39.             OpenFileDialog ofd = new OpenFileDialog();
  40.             ofd.AddExtension = true;
  41.             ofd.Title = "图片选择过滤器";
  42.             ofd.Filter = "file(*.jpg)|*.jpg|file(*.bmp)|*.bmp";
  43.             if(ofd.ShowDialog()==DialogResult.OK)
  44.             {
  45.               
  46.                 pictureBox1.Image = Image.FromFile(ofd.FileName);
  47.                 FileStream fs = new FileStream(ofd.FileName,FileMode.Open,FileAccess.Read);
  48.                 BinaryReader br = new BinaryReader(fs);
  49.                 photo = br.ReadBytes((int)fs.Length);
  50.                 br.Close();
  51.                 fs.Close();

  52.             }
  53.         }

  54.         private void button3_Click(object sender, EventArgs e)
  55.         {
  56.             pictureBox1.Image = null;
  57.             SqlCommand cmd2 = new SqlCommand("select image_tupian from image where image_id='" + textBox1.Text + "'",conn);
  58. <font color="#ff0000">            //conn.Open();
  59.             //myreader = cmd2.ExecuteReader(CommandBehavior.CloseConnection);
  60.             //if (myreader.Read())
  61.             //{
  62.             //   photo =(byte[])myreader.GetValue(0);//这是第一种图片读取方法,
  63.             //}
  64.             //MemoryStream ms = new MemoryStream(photo);
  65.             //pictureBox1.Image = Image.FromStream(ms);
  66.             //ms.Close();
  67.             //myreader.Close();</font>
  68. <font color="#0000ff">            conn.Open();
  69.             photo = (byte[])cmd2.ExecuteScalar();
  70.             MemoryStream ms = new MemoryStream(photo);//这是第二种图片读取方法,简单了很多
  71.             if (ms.Length > 0)
  72.             {
  73.                 pictureBox1.Image = Image.FromStream(ms);
  74.             }
  75.             else
  76.                 pictureBox1.Image = null;
  77.             conn.Close();
  78.         }</font>

  79.         private void Form1_Load(object sender, EventArgs e)
  80.         {
  81.          
  82.               conn = new SqlConnection(global.conString);
  83.               SqlDataAdapter sda = new SqlDataAdapter("Select * from image",conn);
  84.               DataSet ds = new DataSet();
  85.               sda.Fill(ds,"image");
  86.              dataGridView1.DataSource=ds.Tables["image"].DefaultView;
  87.               

  88.         }

  89.         private void button4_Click(object sender, EventArgs e)
  90.         {
  91.             Form2 f2 = new Form2();
  92.             f2.ShowDialog();
  93.         }
  94.     }
  95. }
复制代码

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

1 个回复

倒序浏览
值得学习!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马