Вставка байтов с кодированной строкой base 64 в столбец базы данных sql - PullRequest
0 голосов
/ 04 мая 2018

У меня есть строка байтов данных 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», все работает, но не с моими байтами.

ПОЖАЛУЙСТА, ПОМОГИТЕ!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...