Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在sql数据库列中插入字节base64编码字符串_Ios_Sql_Asp.net_Asp.net Mvc_Stored Procedures - Fatal编程技术网

Ios 在sql数据库列中插入字节base64编码字符串

Ios 在sql数据库列中插入字节base64编码字符串,ios,sql,asp.net,asp.net-mvc,stored-procedures,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> la

我有一个字符串,它是来自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;
        }
现在,我试图在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”,一切都正常,但我的字节不正常


请帮忙

你的SP稳定吗?您是否尝试通过传递2个测试值从SSMS执行SP?它被保存了吗?另外,请切换到
nvarchar
并查看发生了什么。另外,请记住,SQL server有一个varbinary类型,您可以在其中存储字节数组。我尝试了varbinary类型,但它不起作用,我在列中设置了varbinary类型,在方法中设置了存储过程和存储过程调用,这对我的字符串不起作用。是的,我的存储过程使用字符串“AAAAA”。如果在db中使用varbinary,则必须传递字节数组,而不是字符串。在异常-
catch
块中放置断点,并检查内部异常/消息是什么
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