使用c#中的存储过程在字节数组中检索已保存的图像



我已经成功地将图像保存为SQL Server数据库表中的字节数组。现在我需要使用一个存储过程来检索它。

模型:

public class PlateNumberEntity
{
public DateTime EntryDateTime { get; set; }
public string PlateNumber { get; set; } = string.Empty;
public string Plaza { get; set; } = string.Empty;
public string Direction { get; set; } = string.Empty;
public byte[]? OverViewImage { get; set; } = null;
}

存储库:

public List<PlateNumberEntity> GetPlateNumberEntities(string plateNumber)
{
var list = new List<PlateNumberEntity>();
using(connection = new SqlConnection(connectionString))
{
connection.Open();
using(var cmd = connection.CreateCommand())
{
cmd.CommandText = "[dbo].[GetAlprEntryInfo]";
cmd.CommandType = CommandType.StoredProcedure;
cmd.CommandTimeout = 10;
var pPlateNumber = new SqlParameter
{
ParameterName = "@PlateNumber",
DbType = DbType.String,
Direction = ParameterDirection.Input,
Value = plateNumber
};
cmd.Parameters.Add(pPlateNumber);
using(var reader = cmd.ExecuteReader())
{
if (reader.HasRows)
{
while (reader.Read())
{
var entryDateTime = reader.GetDateTime(0);
var plate = reader.GetString(1);
var plaza = reader.GetString(2);
var direction = reader.GetString(3);
var overViewImage = reader.??? ====> HOW TO RETRIEVE THE BYTES

var xList = new PlateNumberEntity
{
....
}
list.Add(xList)
}
}
}
}
}
return list;
}

我想我可以使用reader.GetBytes(<parameters>),但图像的大小可能会有所不同。

先获取原始值

object[] values = new object[5];
reader.GetValues(values);

然后,单个值

var entryDateTime = (DateTime)values[0];
var plate = (string)values[1];
var plaza = (string)values[2];
var direction = (string)values[3];
var overViewImage = (byte[])values[4];

最新更新