zoukankan      html  css  js  c++  java
  • 图片保存到数据库的小程序

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

    源码如下:

    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大的图片,可以远远满足你的要求。

    源码下载: CODE   演示版:DEMO
  • 相关阅读:
    对象属性对话框只能放大不能缩小
    Windows2003 Server升级至SP2后,水晶报表导出EXCEL出错
    磁盘结构损坏且无法读取
    InsusCharacterUtility.dll怎么调用
    会员综合实例
    无法连接SQL Server 2008
    JavaScript alert Utility
    DNS与Active Directory在两台服务器分别布署
    显示用户权限
    焦点新闻图片轮翻广告
  • 原文地址:https://www.cnblogs.com/tuyile006/p/1037932.html
Copyright © 2011-2022 走看看