Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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
C# 不允许从数据类型varchar隐式转换为varbinary(max)#_C#_Sql Server - Fatal编程技术网

C# 不允许从数据类型varchar隐式转换为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

我正在尝试将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 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_不信者,你说得对。不幸的是,我不能删除这个答案:/我对它进行了编辑,并提出了不同的方法。我希望它更好。