У меня есть строка байтов данных base64EncodedString из iOS, которая является очень длинной строкой
let imageStr = imageData.base64EncodedString()
Я вызываю .NET-метод из моего ios, который вызывает хранимую процедуру для вставки этих байтов в базу данных.
Вот мой метод .NET, обратите внимание на тип данных, который я установил для него VarChar для @ Images
public List<Images> PostLandGradingImages(List<Images> landingCells)
{
try
{
using (connection = new SqlConnection(connectionString))
{
connection.Open();
using (SqlCommand command = new SqlCommand("PostLandGradingImages", connection))
{
command.CommandType = CommandType.StoredProcedure;
for (int i = 0; i < landingCells.Count; i++)
{
command.Parameters.Clear();
SqlParameter parameter1 = new SqlParameter("@Job_No", SqlDbType.VarChar);
parameter1.Value = landingCells[i].jobNo;
parameter1.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter1);
SqlParameter parameter2 = new SqlParameter("@Image", SqlDbType.VarChar);
parameter2.Value = landingCells[i].imageBytes;
parameter2.Direction = ParameterDirection.Input;
command.Parameters.Add(parameter2);
command.ExecuteNonQuery();
}
}
}
}
catch (Exception e)
{
return landingCells;
}
return landingCells;
}
Вот мой класс изображений, обратите внимание, что мой imageBytes определен как строка:
public class Images
{
public string jobNo { get; set; }
public string imageBytes { get; set; }
}
Теперь тип данных для столбца, который я пытаюсь вставить в базу данных sql, - nvarchar (MAX)
Но когда моя хранимая процедура запускается, запись не вставляется:
ALTER PROCEDURE [dbo].[PostLandGradingImages]
-- Add the parameters for the stored procedure here
@Job_No varchar(MAX) = NULL,
@Image varchar(MAX) = NULL
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
INSERT INTO LandGradingImages (Job_No, ImageBytes) VALUES (@Job_No, @Image)
END
Теперь я не могу отладить код .NET, но у меня такое ощущение, что я неправильно устанавливаю типы данных, у меня вопрос: какие типы данных мне нужно установить, чтобы вставить байты в base64EncodedString в столбец базы данных? Если я передаю строку «AAAA», все работает, но не с моими байтами.
ПОЖАЛУЙСТА, ПОМОГИТЕ!