添加图片到员工个人资料

本文关键字:个人资料 添加 | 更新日期: 2023-09-27 18:16:39

我有一个员工个人资料表,想把员工图片添加为varbinary(max)

如何使用c#和Ms SQL Server 2008在Winform中加载/保存图像

添加图片到员工个人资料

保存图片

byte[] data = System.IO.File.ReadAllBytes(filePath);
using(SqlCommand cm = new SqlCommand("SaveImage", connection, transaction))
{
   cm.CommandType = CommandType.StoredProcedure;
   cm.Parameters.Add(new SqlParameter("@Id", SqlDbType.Int,0, ParameterDirection.InputOutput, false, 10, 0, "Id", DataRowVersion.Current, (SqlInt32)instance.Id));
   cm.Parameters.Add(new SqlParameter("@Title", SqlDbType.NVarChar,50, ParameterDirection.Input, false, 0, 0, "Title", DataRowVersion.Current, (SqlString)instance.Title));
   if (instance.Data.Length > 0)
   {
       cm.Parameters.Add(new SqlParameter("@Data", SqlDbType.VarBinary,instance.Data.Length, ParameterDirection.Input, false, 0, 0, "Data", DataRowVersion.Current, (SqlBinary)instance.Data));
   }
   else
   {
       cm.Parameters.Add(new SqlParameter("@Data", SqlDbType.VarBinary,0, ParameterDirection.Input, false, 0, 0, "Data", DataRowVersion.Current, DBNull.Value));                    
   }
   cm.ExecuteNonQuery();
}
创建存储过程
CREATE PROCEDURE SaveImage
(
@Id int OUTPUT 
,@Title nvarchar(50)
,@Data varbinary(MAX)
)
AS
SET NOCOUNT ON
SET XACT_ABORT ON
IF @Id IS NULL OR @Id <= 0
BEGIN
SELECT @Id = ISNULL(MAX([Id]),0) + 1 FROM [dbo].[Images]
END
INSERT INTO [dbo].[Images] (
[Id]
,[Title]
,[Data]
) VALUES (
@Id
,@Title
,@Data
)

读取VarBinary数据

private static byte[] getImage(int EmployeeId)
{
    using (SqlConnection cn = new SqlConnection("..."))
    using (SqlCommand cm = cn.CreateCommand())
    {
        cm.CommandText = @"
            SELECT ImageData
            FROM   EmployeeTable
            WHERE  EmployeeId = @Id";
        cm.Parameters.AddWithValue("@Id", EmployeeId);
        cn.Open();
        return cm.ExecuteScalar() as byte[];
    }
}
byte[] data = getImage("EmployeeID");
MemoryStream ms = new MemoryStream(data);
EmployeeImage.Image = Image.FromStream(ms);