将64位编码字符串的字节插入sql数据库列

时间:2018-05-04 00:34:29

标签: ios sql asp.net asp.net-mvc stored-procedures

我有一个字符串,它是来自iOS的数据字节base64EncodedString,这是一个非常长的字符串

let imageStr = imageData.base64EncodedString()

我从我的ios调用.NET方法,它将调用存储过程将这些字节插入数据库。

这是我的.NET方法,请注意我为@Images

设置VarChar的数据类型
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;
        }

这是我的Image Class,注意我的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中的字节插入数据库列?如果我传入字符串&#34; AAAA&#34;一切正常,但不是我的字节。

请帮助!

0 个答案:

没有答案