图片保存到数据库

应一位网友要求,做了一个将图片保存到数据库和从数据库读取图片的小程序。

源码如下:

using  System;
using  System.Collections.Generic;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Text;
using  System.Windows.Forms;
using  System.Data.Sql;
using  System.Data.SqlClient;
using  System.IO;

namespace  ImageToDB
{
    
public   partial   class  UserEdit : Form
    {
        
public  UserEdit()
        {
            InitializeComponent();
        }
        
private   void  UserEdit_Load( object  sender, EventArgs e)
        {
            LoadNextUser();
        }
        
string  strConn  =   " Data Source=wangyang//SQLEXPRESS;Initial Catalog=test;Persist Security Info=True;User ID=uap;Password=uap " ;
        
string  strGetTopOne  =   " select top 1 * from users  " ;

        
///   <summary>
        
///  保存按钮事件
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  button2_Click( object  sender, EventArgs e)
        {
            
if  (txtUserID.Text  ==   ""   ||  txtUserID.Text  ==   string .Empty)
            {
                
// 新增
                 if  (txtUserName.Text  ==   ""   ||  txtImagePath.Text  ==   "" )
                {
                    MessageBox.Show(
" 用户名和图片不能为空! " );
                    
return ;
                }
                
// 这里看如何将图片保存到数据库的。
                FileStream fs  =  File.OpenRead(txtImagePath.Text);
                
byte [] imageb  =   new   byte [fs.Length];
                fs.Read(imageb, 
0 , imageb.Length);
                fs.Close();
                
string  strSQL  =   " insert into Users(UserName,UserImage)values(@UserName,@UserImage) " ;
                SqlConnection con 
=   new  SqlConnection(strConn);
                SqlCommand com3 
=   new  SqlCommand(strSQL, con);
                com3.Parameters.Add(
" @UserName " , SqlDbType.VarChar).Value  =  txtUserName.Text;
                com3.Parameters.Add(
" @UserImage " , SqlDbType.Image).Value  =  imageb;
                
if  (com3.Connection.State  ==  ConnectionState.Closed)
                    com3.Connection.Open();
                
try
                {
                    com3.ExecuteNonQuery();
                    MessageBox.Show(
" 新增用户成功! " );
                }
                
catch
                {
                    MessageBox.Show(
" 新增用户失败! " );
                }
                
finally
                { com3.Connection.Close(); }

            }
            
else
            {
                
// 修改
                
// 这里看如何将图片保存到数据库的。
                 string  strSQL  =   " update users set username=@UserName " ;
                
if  (txtImagePath.Text  !=   "" )
                    strSQL 
+=   " ,userimage=@UserImage " ;
                SqlConnection con 
=   new  SqlConnection(strConn);
                SqlCommand com3 
=   new  SqlCommand(strSQL, con);
                com3.Parameters.Add(
" @UserName " , SqlDbType.VarChar).Value  =  txtUserName.Text;
                
if  (txtImagePath.Text  !=   "" )
                {
                    FileStream fs 
=  File.OpenRead(txtImagePath.Text);
                    
byte [] imageb  =   new   byte [fs.Length];
                    fs.Read(imageb, 
0 , imageb.Length);
                    fs.Close();
                    com3.Parameters.Add(
" @UserImage " , SqlDbType.Image).Value  =  imageb;
                }
                
if  (com3.Connection.State  ==  ConnectionState.Closed)
                    com3.Connection.Open();
                
try
                {
                    com3.ExecuteNonQuery();
                    MessageBox.Show(
" 修改用户成功! " );
                }
                
catch
                {
                    MessageBox.Show(
" 修改用户失败! " ); 
                }
                
finally
                { com3.Connection.Close(); }
            }

        }

        
///   <summary>
        
///  下一位。
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  button4_Click( object  sender, EventArgs e)
        {
            
string  preUserID  =  txtUserID.Text;
            LoadNextUser();
            
if  (txtUserID.Text  ==  preUserID)
                MessageBox.Show(
" 已经是最后一位用户! " );
        }

        
///   <summary>
        
///  清空。
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  button1_Click( object  sender, EventArgs e)
        {
            txtUserID.Text 
=   "" ;
            txtUserName.Text 
=   "" ;
            txtImagePath.Text 
=   "" ;
            pictureBox1.Image 
=   null ;
        }
        
///   <summary>
        
///  选择图片。
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  btOpenImage_Click( object  sender, EventArgs e)
        {
            openFileDialog1.Filter 
=   " JPEG|*.jpg|GIF|*.gif " ;
            
if  (openFileDialog1.ShowDialog()  ==  DialogResult.OK)
            {
                txtImagePath.Text 
=  openFileDialog1.FileName;
                FileStream fs 
=  File.OpenRead(txtImagePath.Text);
                
byte [] imageb  =   new   byte [fs.Length];
                fs.Read(imageb, 
0 , imageb.Length);
                fs.Close();
                MemoryStream memStream 
=   new  MemoryStream(imageb);
                
try
                {
                    Bitmap myimge 
=   new  Bitmap(memStream);
                    
this .pictureBox1.Image  =  myimge;
                }
                
catch
                {
                }
            }
        }

        
///   <summary>
        
///  从数据库中读取下一位用户的信息。如果参数为空则读取第一条信息。
        
///   </summary>
        
///   <param name="PreUserID"></param>
        
///   <returns></returns>
         public  DataTable GetTopOneUser( string  filter)
        {
            strGetTopOne 
=   " select top 1 * from users  " ;
            
if  (filter  !=   ""   &&  filter  !=   string .Empty)
                strGetTopOne 
+=  filter;
            SqlConnection con 
=   new  SqlConnection(strConn);
            SqlCommand com 
=   new  SqlCommand(strGetTopOne, con);
            
if  (con.State  ==  ConnectionState.Closed)
                con.Open();
            SqlDataAdapter da 
=   new  SqlDataAdapter(com);
            DataSet ds 
=   new  DataSet();
            da.Fill(ds, 
" UserTable " );
            
if  (ds  !=   null   &&  ds.Tables.Count  >   0 )
                
return  ds.Tables[ 0 ];
            
else
                
return   null ;
        }
        
///   <summary>
        
///  加载下一位用户信息
        
///   </summary>
         public   void  LoadNextUser()
        {
            
// 这里看如何将数据库图片读出来
             string  filter  = "" ;
            
if  (txtUserID.Text  !=   "" )
                filter 
=   "  where userid> "   +  txtUserID.Text;
            DataTable dt 
=  GetTopOneUser(filter);
            
if  (dt.Rows.Count  ==   0 )
                
return ;
            DataRow dr 
=  dt.Rows[ 0 ];
            txtUserID.Text 
=  dr[ " UserID " ].ToString();
            txtUserName.Text 
=  dr[ " UserName " ].ToString();
            
byte [] imageb  =  ( byte [])dr[ " UserImage " ];
            MemoryStream memStream 
=   new  MemoryStream(imageb);
            
try
            {
                Bitmap myimge 
=   new  Bitmap(memStream);
                
this .pictureBox1.Image  =  myimge;
            }
            
catch
            {
            }
        }
        
///   <summary>
        
///  加载上一位用户信息
        
///   </summary>
         public   void  LoadPreUser()
        {
            
string  filter  =   "" ;
            
if  (txtUserID.Text  !=   "" )
                filter 
=   "  where userid< "   +  txtUserID.Text + "  order by Userid desc " ;
            DataTable dt 
=  GetTopOneUser(filter);
            
if  (dt.Rows.Count  ==   0 )
                
return ;
            DataRow dr 
=  dt.Rows[ 0 ];
            txtUserID.Text 
=  dr[ " UserID " ].ToString();
            txtUserName.Text 
=  dr[ " UserName " ].ToString();
            
byte [] imageb  =  ( byte [])dr[ " UserImage " ];
            MemoryStream memStream 
=   new  MemoryStream(imageb);
            
try
            {
                Bitmap myimge 
=   new  Bitmap(memStream);
                
this .pictureBox1.Image  =  myimge;
            }
            
catch
            {
            }
        }
        
///   <summary>
        
///  关闭。
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  button3_Click( object  sender, EventArgs e)
        {
            
this .Close();
        }
        
///   <summary>
        
///  上一位
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  button5_Click( object  sender, EventArgs e)
        {
            
string  preUserID  =  txtUserID.Text;
            LoadPreUser();
            
if  (txtUserID.Text  ==  preUserID)
                MessageBox.Show(
" 已经是最前一位用户! " );
            
        }
        
///   <summary>
        
///  帮助。
        
///   </summary>
        
///   <param name="sender"></param>
        
///   <param name="e"></param>
         private   void  linkLabel1_LinkClicked( object  sender, LinkLabelLinkClickedEventArgs e)
        {
            help helper 
=   new  help();
            helper.Show();
        }
        
    }
}



界面如下:


说明:
不用担心数据库能不能存放下你保存的图片,数据库可以存放2GB大的图片,可以远远满足你的要求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值