当将字节插入VARBINARY字段时,对象必须实现IConvertible

时间:2014-07-31 23:15:20

标签: c# sql asp.net sql-server

我在网上看到很多人遇到这个问题,我还没有找到解决我问题的解决方案。

我这里有这个代码:

byte[] bytes = btnBrowse.FileBytes;
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["shbndbConnectionString"].ConnectionString);

SqlCommand cmd = new SqlCommand("Insert Into tblProject (id,updateDate,statusUpdate,attachment) Values (@projectId,GETDATE(),@statusUpdate,@file)", conn);

cmd.Parameters.Add("@file",SqlDbType.VarBinary).Value = bytes;
cmd.Parameters.Add("@statusUpdate",SqlDbType.NVarChar).Value = txtStatusUpdate;
cmd.Parameters.Add("@projectId",SqlDbType.Int).Value = lblProjectId.Text;

//cmd.CommandType = CommandType.StoredProcedure;
conn.Open();

if (cmd.ExecuteNonQuery() >= 1)
{
   lblDone.Text = "Success";
   lblDone.Visible = true;
}

conn.Close();

现在我一直收到这个错误:

  

对象必须实现IConvertible。

据我所知,这是因为我试图在表格中插入一个数组,但我去的每个网站都说我插入它的方式是正确的。

为什么我收到此错误?

我的表格中的VARBINARY列长度为

1 个答案:

答案 0 :(得分:3)

异常的原因很可能是这一行,您尝试将整个TextBox指定为参数值:

cmd.Parameters.Add("@statusUpdate",SqlDbType.NVarChar).Value = txtStatusUpdate;

使用txtStatusUpdate.Text从TextBox中获取实际值。

cmd.Parameters.Add("@statusUpdate",SqlDbType.NVarChar).Value = txtStatusUpdate.Text;