• C#-将照片存入到SQL SERVER


    将存照片的字段设为image类型。

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Data.SqlClient;
    using System.Drawing;
    using System.IO;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using System.Windows.Forms;
    
    namespace PhotoSQL
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }
    
            string sqlCon = "";
            private void button1_Click(object sender, EventArgs e)
            {
                string url = @"C:UsersjinweiDesktop	iger.jpg";
                byte[] dd = GetPictureData(url);
    
                ImgToDB(dd);//保存到数据库中  
            }
    
            private void button2_Click(object sender, EventArgs e)
            {
                ImgDBTo();
            }
    
            /// <summary>
            /// 保存到数据库
            /// </summary>
            /// <param name="imgBytesIn"></param>
            private void ImgToDB(byte[] imgBytesIn)
            {
                try
                {
                    SqlConnection con = new SqlConnection("server=SDSC2-1,1433;uid=sa;pwd=jinwei;database=web");
                    con.Open();
                    SqlCommand cmd = new SqlCommand("insert  into aaaa (img) values( @Image ) ;", con);
                    cmd.Parameters.Add("@Image", SqlDbType.Image);
                    cmd.Parameters["@Image"].Value = imgBytesIn;
                    cmd.ExecuteNonQuery();
    
                    con.Close();
                    MessageBox.Show("图片上传成功");
    
                }
                catch
                {
                    MessageBox.Show("您选择的图片不能被读取或文件类型不对!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    
                }
    
            }
    
            /// <summary>
            /// 从数据库中  图片 并且保存到C盘
            /// </summary>
            public void ImgDBTo()
            {
                byte[] MyData = new byte[0];
                using (SqlConnection conn = new SqlConnection("server=SDSC2-1,1433;uid=sa;pwd=jinwei;database=web"))
                {
                    conn.Open();
                    SqlCommand cmd = new SqlCommand();
                    cmd.Connection = conn;
                    cmd.CommandText = "select * from aaaa";
                    SqlDataReader sdr = cmd.ExecuteReader();
                    sdr.Read();
                    object o = sdr["img"];
                    MyData = (byte[])sdr["img"];//读取第一个图片的位流
                    int ArraySize = MyData.GetUpperBound(0);//获得数据库中存储的位流数组的维度上限,用作读取流的上限
    
                    FileStream fs = new FileStream(@"c:0.jpg", FileMode.OpenOrCreate, FileAccess.Write);
                    fs.Write(MyData, 0, ArraySize);
                    fs.Close();   //-- 写入到c:0.jpg。
                    conn.Close();
                    Console.WriteLine("读取成功");//查看硬盘上的文件
                }
            }
    
            /// <summary>
            /// 根据路径将图片转换成 byte[]
            /// </summary>
            /// <param name="imagepath"></param>
            /// <returns></returns>
            public byte[] GetPictureData(string imagepath)
            {
                /**/
                ////根据图片文件的路径使用文件流打开,并保存为byte[] 
                FileStream fs = new FileStream(imagepath, FileMode.Open);//可以是其他重载方法 
                byte[] byData = new byte[fs.Length];
                fs.Read(byData, 0, byData.Length);
                fs.Close();
                return byData;
            }
        }
    }

    转载来源:

    https://www.cnblogs.com/cl1006/p/10181520.html

  • 相关阅读:
    线段树模板题 contest 线段树 T5
    Guide AHOI2017 洛谷P3720
    静态RMQ模板题 contest 静态RMQ T2
    树状数组模板题 P1904
    AC自动机模板题 P2017
    高精度排序模板题 P1110
    Trie树模板题 P2016
    树状数组套权值线段树
    爬山 启发式合并 / STL
    [POI2011]ROT-Tree Rotations 线段树合并|主席树 / 逆序对
  • 原文地址:https://www.cnblogs.com/JinweiChang/p/11698831.html
Copyright © 2020-2023  润新知