我有一个字符串,它是来自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;一切正常,但不是我的字节。
请帮助!