您好,欢迎来到年旅网。
搜索
您的当前位置:首页存储图片到数据库的image字段中,并在Winform中显示图片

存储图片到数据库的image字段中,并在Winform中显示图片

来源:年旅网

 有人问到图片如何存储到数据库中,以前也做过,但年代已有点久远,选择使用的软件都升级了,有些东西已废弃。所以花了点时间用VS2008+SQL Server 2005做了一个测试程序,希望能对人有所帮助。与人玫瑰,手有余香。涉及到存储过程,ADO.NET操纵数据库,SQL Server 2005中的image(或varbinary(max))字段使用。

       在SQL Server 2005中建立数据库、表、存储过程,SQL如下:       

[sql] 


          在VS2008(C#)中新建项目,名为test,WinForm命名为frmImage,先在窗体上添加1个PictureBox,3个Button,1个OpenFileDialog;cs文件中代码如下:

[csharp] 
  1. using System;  
  2. using System.IO;//自己引入  
  3. using System.Collections.Generic;  
  4. using System.ComponentModel;  
  5. using System.Data;  
  6. using System.Data.SqlClient;//自己引入  
  7. using System.Drawing;  
  8. using System.Text;  
  9. using System.Windows.Forms;  
  10.   
  11. namespace test  
  12. {  
  13.     public partial class frmImage : Form  
  14.     {  
  15.         public frmImage()  
  16.         {  
  17.             InitializeComponent();  
  18.         }  
  19.   
  20.         DataSet ds = new DataSet();  
  21.         SqlDataAdapter da;  
  22.         //连接串,express版,集成认证方式  
  23.         string cnnString = @"integrated security=true;database=test;server=.\sqlexpress";  
  24.         string fileName="";  
  25.   
  26.         //项目名为test,WinForm命名为frmImage  
  27.         //先在窗体上添加1个PictureBox,3个Button,1个OpenFileDialog  
  28.         private void frmImage_Load(object sender, EventArgs e)  
  29.         {  
  30.             pictureBox1.SizeMode = PictureBoxSizeMode.Zoom;               
  31.         }  
  32.           
  33.         //显示表中的第index+1行的第2列(binary(max)类型)到pictureBox1  
  34.         private void showImage(int index)  
  35.         {  
  36.             byte[] bytes = (byte[])ds.Tables[0].Rows[index][1];  
  37.   
  38.             MemoryStream memStream = new MemoryStream(bytes);  
  39.   
  40.             try  
  41.             {  
  42.                 Bitmap myImage = new Bitmap(memStream);  
  43.                 pictureBox1.Image = myImage;  
  44.             }  
  45.             catch(Exception ex)  
  46.             {  
  47.                 MessageBox.Show(ex.Message);  
  48.                 pictureBox1.Image = null;  
  49.             }  
  50.         }  
  51.           
  52.         //打开文件,获得一张图片的文件名  
  53.         private void button1_Click(object sender, EventArgs e)   
  54.         {  
  55.             openFileDialog1.InitialDirectory = "D:\\";  
  56.             openFileDialog1.Filter = "*.jpg|*.*";  
  57.             openFileDialog1.FilterIndex = 0;  
  58.             openFileDialog1.FileName="";             
  59.             openFileDialog1.Title = "打开文件";  
  60.             openFileDialog1.ShowDialog();  
  61.             fileName=openFileDialog1.FileName;  
  62.         }  
  63.   
  64.         //插入图片到数据表tblImage中  
  65.         private void button2_Click(object sender, EventArgs e)  
  66.         {  
  67.             SqlConnection cnn = new SqlConnection(cnnString);  
  68.             cnn.Open();  
  69.             SqlCommand cmd = new SqlCommand("spInsertImage", cnn);  
  70.             cmd.CommandType = CommandType.StoredProcedure;  
  71.             cmd.Parameters.AddWithValue("@fileName", fileName);  
  72.             //@tableName使用默认参数值,下面这句可不用  
  73.             //cmd.Parameters.AddWithValue("@tableName", "tblImage");               
  74.             try  
  75.             {  
  76.                 //调用存储过程spInsertImage  
  77.                 cmd.ExecuteNonQuery();  
  78.                 MessageBox.Show("成功插入一张图片到数据库中!");  
  79.             }  
  80.             catch  
  81.             {  
  82.                 MessageBox.Show("出错了,请确认是否正确选择了图片文件!");  
  83.             }  
  84.             finally  
  85.             {  
  86.                 cnn.Close();  
  87.             }  
  88.         }  
  89.           
  90.         //随机显示一张图片  
  91.         private void button3_Click(object sender, EventArgs e)   
  92.         {  
  93.             SqlConnection cnn = new SqlConnection(cnnString);  
  94.             cnn.Open();  
  95.   
  96.             da = new SqlDataAdapter("select * from tblImage", cnn);  
  97.   
  98.             da.Fill(ds, "testImage");  
  99.   
  100.             Random ran = new Random();  
  101.             int index = ran.Next(ds.Tables[0].Rows.Count);  
  102.             showImage(index);  
  103.         }  
  104.     }  
  105. }  

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务