C#保存图片数据到数据库

using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;

namespace LoadImmages
{
    class LoadImages 
    {
        //you may refer to your own system's image file location
        string imageFileLocation = @"F:\";

        //you may refer to your own image's file name here.
        //string imageFilePrefix = "painting-almirah";
        string imageFilePrefix = "微信";

        int numberImageFiles = 2;

        string imageFileType = ".jpg";
        int maxImageSize = 1000000;
        SqlConnection conn = null;
        SqlCommand cmd = null;

        void OpenConnection()
        {
            conn = new SqlConnection(@"server=.;integrated security = true;database=tempdb");
            conn.Open();
        }

        void CloseConnection()
        {
            conn.Close();
            Console.WriteLine("Connection Closed!");
        }

        void CreateCommand()
        {
            cmd = new SqlCommand();
            cmd.Connection = conn;
        }

        void ExecuteCommand(string cmdText)
        {
            int cmdResult;
            cmd.CommandText = cmdText;
            Console.WriteLine("Executing command:");
            Console.WriteLine(cmd.CommandText);
            cmdResult = cmd.ExecuteNonQuery();
        }

        void CreateImageTable() 
        {
            ExecuteCommand(@" IF not EXISTS (SELECT * FROM sysobjects WHERE name = 'imagetable')
                            BEGIN 
                                create table imagetable(imagefile varchar(20),imagedata varbinary(max))
                            end
                            ");
        }

        void PrepareInsertImages()
        {
            cmd.CommandText = @"Insert into imagetable values (@imagefile,@imagedata)";
            cmd.Parameters.Add("@imagefile",SqlDbType.NVarChar,20);
            cmd.Parameters.Add("@imagedata",SqlDbType.Image,1000000);
            cmd.Prepare();
        }

        void ExecuteInsertImages(int imageFileNumber)
        {
            string imageFileName = null;
            byte[] imageImageData = null;
            imageFileName = imageFilePrefix + imageFileNumber.ToString() + imageFileType;
            imageImageData = LoadImageFile(imageFileName, imageFileLocation, maxImageSize);

            cmd.Parameters["@imagefile"].Value = imageFileName;
            cmd.Parameters["@imagedata"].Value = imageImageData;
            ExecuteCommand(cmd.CommandText);
        }

        byte[] LoadImageFile(string fileName, string fileLocation, int maxImageSize)
        {
            byte[] imagebytes = null;
            string fullpath = fileLocation + fileName;
            Console.WriteLine("Loading File:");
            Console.WriteLine(fullpath);

            try
            {
                FileStream fs = new FileStream(fullpath, FileMode.Open, FileAccess.Read);

                BinaryReader br = new BinaryReader(fs);
                imagebytes = br.ReadBytes(maxImageSize);

                Console.WriteLine("Imagebytes has length {0} bytes.", imagebytes.GetLength(0));
                //return imagebytes;
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
                imagebytes = null;
            }
            //finally
            //{
            //    Console.WriteLine("Load Image File sucessed." + fullpath);
            //}

            return imagebytes;
        }


        static void Main()
        {
            LoadImages loader = new LoadImages();
            try
            {
                loader.OpenConnection();
                loader.CreateCommand();
                loader.CreateImageTable();
                loader.PrepareInsertImages();
                int i;
                for (i = 1; i <= loader.numberImageFiles; i++)
                {
                    loader.ExecuteInsertImages(i);
                }
            }
            catch (SqlException ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                loader.CloseConnection();
            }
        }
    }
}

  • 0
    点赞
  • 1
    收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
评论 1

打赏作者

PB菜鸟

你的鼓励将是我创作的最大动力。

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值