zoukankan      html  css  js  c++  java
  • c# winform下sql图片二进制存储/读取/显示/写入XML/读取XML显示

    winform下:
            //存储

            private void MemoryImage()
            {
                string sql = "";
                //string conn = "Provider=SQLNCLI;Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";

                Stream ms;
                byte[] picbyte;
                OpenFileDialog ofdSelectPic = new OpenFileDialog();
                if (ofdSelectPic.ShowDialog() == DialogResult.OK)
                {
                    if ((ms = ofdSelectPic.OpenFile()) != null)
                    {
                        picbyte = new byte[ms.Length];
                        ms.Position = 0;
                        ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));

                        //连接数据库
                        SqlConnection conn = new SqlConnection();
                        conn.ConnectionString = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";

                        sql = "Insert into LibraryCover(Cover) values(@UpdateImage)";
                        SqlCommand cmd = new SqlCommand(sql, conn);

                        cmd.Parameters.Add("@UpdateImage", SqlDbType.VarBinary);
                        cmd.Parameters["@UpdateImage"].Value = picbyte;

                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();

                        ms.Close();
                    }
                }

                MessageBox.Show("完成!");
            }
            //读取

            private void ShowImage()
            {
                string sql = "";
                sql = "select Cover from LibraryCover where LibID=1";
                SqlConnection conn = new SqlConnection();
                conn.ConnectionString = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";
                SqlCommand cmd = new SqlCommand(sql,conn);
                conn.Open();
                SqlDataReader reader = cmd.ExecuteReader();
                reader.Read();
                MemoryStream ms = new MemoryStream((byte[])reader["Cover"]);
                Image image = Image.FromStream(ms, true);

                reader.Close();
                conn.Close();
                pictureBox1.Image = image;
            }

            //批量存储

            private void button12_Click(object sender, EventArgs e)
            {
                FolderBrowserDialog FBD = new FolderBrowserDialog();
                FBD.ShowDialog();
                DBImages(FBD.SelectedPath);
            }
            /// <summary>
            /// 图片二进制存SQL库
            /// </summary>
            /// <param name="path">图片所在文件夹</param>
            private void DBImages(string path)
            {
                Stream ms;
                string sql = "";
                byte[] picbyte;
                string FolderName = "";
                string[] Folders;
                string connStr = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";
                SqlConnection conn = new SqlConnection(connStr);
                Folders = Directory.GetFiles(path);
                foreach (string folder in Folders)
                {
                    if ((ms = File.OpenRead(folder))!= null)
                    {
                        picbyte = new byte[ms.Length];
                        ms.Position = 0;
                        ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));

                        sql = "insert into LibraryCover(ImageName,Cover) values(@ImageName,@Cover)";
                        SqlCommand cmd = new SqlCommand(sql, conn);

                        cmd.CommandType = CommandType.Text;
                        FolderName = Path.GetFileNameWithoutExtension(folder);
                        cmd.Parameters.Add("@ImageName", SqlDbType.VarChar, 255).Value = FolderName;
                        cmd.Parameters.Add("@Cover", SqlDbType.VarBinary).Value = picbyte;

                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        ms.Close();
                    }
                }
                MessageBox.Show("存储完成!");
            }

            //批量读取

            private void button13_Click(object sender, EventArgs e)
            {
                FolderBrowserDialog FBD = new FolderBrowserDialog();
                FBD.ShowDialog();
                getImageShow(FBD.SelectedPath);
            }
            /// <summary>
            /// sql库二进制图片显示在存储器上
            /// </summary>
            /// <param name="path">要存储图片的位置</param>
            private void getImageShow(string path)
            {
                string sql = "";
                string conn = "Data Source=192.168.0.9,1433;Database=WebDown;UID=sa;PWD=111122;";
                sql = "select ImageName,Cover from LibraryCover order by LibID";
                SqlDataReader sdr = GetList(conn,sql);
                while (sdr.Read())
                {
                    byte[] bytes = (byte[])sdr["Cover"];
                    FileStream fs = new FileStream(path+@"\" + sdr["ImageName"] + ".jpg", FileMode.Create, FileAccess.Write);
                    fs.Write(bytes, 0, bytes.Length);
                    fs.Flush();
                    fs.Close();
                }
                MessageBox.Show("完成!");
            }
            public SqlDataReader GetList(string conn, string Sql)
            {
                SqlConnection myConnection = new SqlConnection(conn);
                SqlCommand myCommand = new SqlCommand(Sql, myConnection);

                myConnection.Open();
                SqlDataReader result = myCommand.ExecuteReader(CommandBehavior.CloseConnection);
                return result;
            }

            private void getImage()
            {
                int num = 0;
                string path = @"D:\bookpic";
                Stream ms;
                string sql = "";
                byte[] picbyte;
                FileInfo[] Folders;
                string[] files;
                string FilePath = "";
                string connStr = "Data Source=192.168.0.200,1433;Database=MISTemp;UID=sa;PWD=111122;";
                SqlConnection conn = new SqlConnection(connStr);
                DirectoryInfo DI = new DirectoryInfo(path);
                Folders = DI.GetFiles("*.*",SearchOption.AllDirectories);
                foreach (FileInfo file in Folders)
                {
                    num++;
                    txt_num.Text = num.ToString();
                    FilePath = file.FullName.Replace(@"D:\", "").Replace(@"\","/");
                    if ((ms = File.OpenRead(file.FullName)) != null)
                    {
                        picbyte = new byte[ms.Length];
                        ms.Position = 0;
                        ms.Read(picbyte, 0, Convert.ToInt32(ms.Length));

                        sql = "update shop_books set Cover=@Cover where bookpic='" + modsql(FilePath) + "'";
                        SqlCommand cmd = new SqlCommand(sql, conn);

                        cmd.CommandType = CommandType.Text;
                        cmd.CommandTimeout = 10000;
                        cmd.Parameters.Add("@Cover", SqlDbType.VarBinary).Value = picbyte;

                        conn.Open();
                        cmd.ExecuteNonQuery();
                        conn.Close();
                        ms.Close();
                    }
                }
               
                MessageBox.Show("存储完成!");
            }
            public string modsql(string sql)
            {
                return sql.Replace("'", "''");
            }

    //Image写入XML
    using System.IO;
    using System.Runtime.Serialization.Formatters.Soap;

            string MyFile = @"D:\数据处理\image.xml";
            string imageFile = @"G:\zengwei.jpg";
            Stream MyStream;
            SoapFormatter MyFormatter =new SoapFormatter();
            

            private void button1_Click(object sender, EventArgs e)
            {
                try
                {
                    MyStream = new FileStream(MyFile, FileMode.Create, FileAccess.Write, FileShare.None);
                    MyFormatter.Serialize(MyStream, pictureBox1.Image);
                    MyStream.Close();
                    MessageBox.Show("完成!");
                }
                catch (Exception ex)
                {
                   
                }
            }
    //读取XML显示IMAGE
            private void button2_Click(object sender, EventArgs e)
            {
                try
                {
                    MyStream = new FileStream(MyFile, FileMode.Open, FileAccess.Read, FileShare.None);
                    pictureBox1.Image = (Bitmap)MyFormatter.Deserialize(MyStream);
                    MyStream.Close();
                }
                catch (Exception ex)
                { }
            }

            private void button3_Click(object sender, EventArgs e)
            {
                pictureBox1.Image = Image.FromFile(imageFile);
            }

  • 相关阅读:
    Chrome截屏-截取当前页
    SecureCRT 工具分享
    mongodb在shutdown时报错:shutdown must run from localhost when running db without auth
    gdb如何实现info vtbl命令
    aspose.word 替换图片
    字节跳动校招+社招
    Flink日志输出配置
    Kafka高可用及高性能原因
    基于SAAS模式的客服云平台落地实践
    代码Recode
  • 原文地址:https://www.cnblogs.com/zengwei/p/1019679.html
Copyright © 2011-2022 走看看