C#WinForm实现上传图片功能同时更新到数据库中(同时用到了OpenFileDialog)

1.首先添加一个PictureBox控件和两个Button控件

    C#WinForm实现上传图片功能同时更新到数据库中(同时用到了OpenFileDialog)_第1张图片

2.连接数据库的代码在此不再赘述,在我的博文ADO.NET中已经详细介绍

3.上传图片按钮的点击事件:

 //上传图片点击按钮代码
        bool isUpLoadPicture;  //是否上传图片,用于在点击保存时,判断是否有图片,如果有则添加图片路径到
        string empUpLoadPictureFormat;  //上传的图片的后缀名 
        private void button1_Click(object sender, EventArgs e)
        {
            try
            {
                openFileDialog1.Filter = "*.jpg|*.jpg|*.png|*.png|*.bmp|*.bmp|*.tiff|*.tiff";//图片格式  
                if (openFileDialog1.ShowDialog() == DialogResult.OK) //打开文件会话窗口
                {
                    isUpLoadPicture=true;//记录是否上传了相片,用于后面保存操作使用:是一个成员变量  
                    try
                    {
                        string empUpLoadPictureRealPos = openFileDialog1.FileName;//物理路径:实际的文件路径+文件名  
                        String[] empImageData = empUpLoadPictureRealPos.Split('.');
                        //empImageData[1]:是上传的图片的后缀名  
                        empUpLoadPictureFormat = empImageData[1];
                        pictureBox1.Image= Image.FromFile(empUpLoadPictureRealPos);//将图片显示在pitureBox控件中
                    }
                    catch
                    {
                        MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    }
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show("上传相片出错: " + ex.Message);
            }
        }

4.保存 按钮的点击事件:

private void button2_Click(object sender, EventArgs e)
        {
            String empImageName = "";
            //开始保存:需要根据是否上传了员工相片保存员工相片  
            if (isUpLoadPicture == true)
            {
                //说明上传了相片  

                //设置员工相片的名字:以系统当前时间毫秒来命名
                empImageName = DateTime.Now.Ticks /10000 + "." + empUpLoadPictureFormat;
                        
                File.Copy(openFileDialog1.FileName, Application.StartupPath + "\\images\\" + empImageName );
                string str2 = Application.StartupPath + "\\images\\" + empImageName;

                //将路径保存到数据库中
                try
                {
                    conn.Open();
                    SqlCommand cmd = new SqlCommand();
                    cmd.CommandText = "update tb_Emp set emp_Image='" + str2 + "'where emp_Id=0";
                    cmd.CommandType = CommandType.Text;
                    cmd.Connection = conn;
                    int a = cmd.ExecuteNonQuery(); ;
                    conn.Close();
                }
                catch (Exception ex)
                {

                }
             
            }
            else
            {
                //没有上传相片  
                empImageName = "default.jpg";
            }
        }

5.在加载窗体时,就直接读取路径加载到PictureBox中:

    

 conn.Open();
            SqlCommand cmd = new SqlCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select emp_Image from tb_Emp where emp_Id=0";
            cmd.Connection = conn;
            SqlDataAdapter sda = new SqlDataAdapter();
            sda.SelectCommand = cmd;
            DataTable dt = new DataTable();
            sda.Fill(dt);
            string imagePath=(string)dt.Rows[0]["emp_Image"];
            MessageBox.Show(imagePath);
            pictureBox1.ImageLocation = imagePath;//加载图片用ImageLocation
            conn.Close();
    图片的自适应大小是PictureBox的SizeMode属性

6.在数据库中要有相应的图片路径字段,现在实现的是完全限定名路径的存储,不是相对路径,在数据库中的路径是这样的:

    "F:\\VS\\WindowsFormsApplication1\\WindowsFormsApplication1\\bin\\Debug\\images\\63666232294340.jpg"


你可能感兴趣的:(C#,WinForm)