C# 不允许从数据类型varchar隐式转换为varbinary(max)#
我正在尝试将byte[]插入sql server中的varbinary(MAX)列C# 不允许从数据类型varchar隐式转换为varbinary(max)#,c#,sql-server,C#,Sql Server,我正在尝试将byte[]插入sql server中的varbinary(MAX)列 下面是我的代码 SqlCommand cmd = new SqlCommand("Insert Into Details values ('@name','@Biometric','@TemplateBytesLength','@date') ", con); cmd.Parameters.AddWithValue("name", txt_name.Text.Trim()); SqlParameter sqlPa
下面是我的代码
SqlCommand cmd = new SqlCommand("Insert Into Details values ('@name','@Biometric','@TemplateBytesLength','@date') ", con);
cmd.Parameters.AddWithValue("name", txt_name.Text.Trim());
SqlParameter sqlParam = cmd.Parameters.AddWithValue("@Biometric", bTemplateDataOne);
sqlParam.DbType = DbType.Binary;
//cmd.Parameters.AddWithValue("Biometric", bTemplateDataOne);
cmd.Parameters.AddWithValue("TemplateBytesLength", bTemplateDataOne.Length);
cmd.Parameters.AddWithValue("date", DateTime.Now);
cmd.CommandType = CommandType.Text;
cmd.ExecuteNonQuery();
con.Close();
bTemplateDataOne是一个字节[]
byte[] bTemplateDataOne;
我得到的错误是
不允许从数据类型varchar隐式转换为varbinary(max)。使用CONVERT函数运行此查询。
为什么不允许将数据插入SQL表
我认为更好的解决方案是使用如下SqlParameter:
cmd.Parameters.Add("@Biometric", SqlDbType.VarBinary, 8000).Value = bTemplateDataOne;
show table schema您已将参数名放在
'
引号内-这意味着您试图插入诸如'@name'
之类的文本字符串,而不是作为@name
参数提供的任何字符串。这是“bTemplateDataOne”一个字节吗?看到it@Damien_The_Unbeliever这不是问题,在参数中添加@in仍然显示相同的错误不,你误解了我的意思。我是说在insert语句的values子句中,您试图插入四个字符串,它们恰好包含一些参数的名称。嗯?您希望通过将要存储的数据量乘以4/3并存储为字符串来节省数据库中的空间,而不是使用设计用于存储任意字节数据的内置类型?这似乎与问题无关。而且不会像建议的那样节省任何空间。@Damien_不信者,你说得对。不幸的是,我不能删除这个答案:/我对它进行了编辑,并提出了不同的方法。我希望它更好。