如何使用c#windows表单在sql中存储图像

本文关键字:存储 图像 sql 何使用 c#windows 表单 | 更新日期: 2023-09-27 18:24:18

我有一个类似(id,name,image)的表,我想知道如何在数据库中存储和更新图像。我使用OpenFileDialog阅读图像,希望能帮助我的朋友。

如何使用c#windows表单在sql中存储图像

试试这个

CREATE TABLE [dbo].[Employee](
     [emp_id] [int] NOT NULL,
     [emp_name] [varchar](50) NOT NULL,
     [emp_image] [image] NULL
 ) ON [PRIMARY] TEXTIMAGE_ON [PRIMARY]

string fileName = @"D:'MyImage.jpg";
string connectionString = "Password=PWD;Persist Security " + 
    "Info=True;User ID=USER;Initial Catalog=DATABASE;Data Source=SQLSERVER";
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
    FileInfo finfo = new FileInfo(fileName);
    byte[] btImage = new byte[finfo.Length];
    FileStream fStream = finfo.OpenRead();
   fStream.Read(btImage, 0, btImage.Length);
  fStream.Close();

   using (SqlCommand sqlCommand = new SqlCommand(
        "INSERT INTO Employee (emp_id, emp_name, " + 
        "emp_image) VALUES(@emp_id, @emp_name, @emp_image)", 
        sqlConnection))
   {
       sqlCommand.Parameters.AddWithValue("@emp_id", 2);
       sqlCommand.Parameters.AddWithValue("@emp_name", "Employee Name");
       SqlParameter imageParameter = 
             new SqlParameter("@emp_image", SqlDbType.Image);
       imageParameter.Value = btImage;
       sqlCommand.Parameters.Add(imageParameter);
       sqlConnection.Open();
       sqlCommand.ExecuteNonQuery();
       sqlConnection.Close();
   }
}

参考

在sql中存储/检索图像的推荐方法之一是使用Base64格式。

您可以将image转换为base64字符串,并将其保存到sql中。从sql中获取base64字符串,并将其转换回image。

这里有一个关于如何执行这两种转换的链接。

您可以使表中的字段数据类型为varbinary(MAX),然后使用c#将图像保存在ms-sql中

using (MemoryStream ms = new MemoryStream())
{
  picturePictureEdit.Image.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
                    c.Picture = ms.ToArray();
}

如果你从表中得到图像,你可以写下这个代码

if (c.Picture != null)
{
       byte[] newbit = c.Picture.ToArray();
        MemoryStream mem = new MemoryStream(newbit);
        picturePictureEdit.Image = new Bitmap(mem);
}
else
{
picturePictureEdit.Image = null;
}

您需要将图像序列化为可以存储在SQL BLOB列中的二进制格式看看这个