public void InsertMails(string From, string To, string Date, string Content, string AttachmentPath, byte[] CCD)
{
ClassLibrary.ConnectionClass.CurrentConnection.ExecuteNonReader("Insert into RecieveDirectMails([From],[To],Date,[Content],AttachmentPath,CreationDate,LastUpdatedDate,IsReviewed,LastUpdatedBy,IsDeleted,IsLocked,LockedBy,CCD) values ('" + From + "','" + To + "','" + Date + "','" + Content + "','" + AttachmentPath + "','" + DateTime.Now + "','" + DateTime.Now + "','" + "0" + "','" + "0" + "','" + "0" + "','" + "0" + "','" + "0" + "','" + CCD+ "')");
}
我将XML文件字节存储到数据库中,但发生了错误。
不允许从数据类型varchar到varbinary(max)的隐式转换。使用CONVERT函数运行此查询。
在我做错的地方,任何人都可以帮助我。
在数据库中,CCD
列的数据类型为varbinary(MAX)
答案 0 :(得分:1)
T-SQL中的二进制值由前缀为0x
的十六进制编码文字表示,如下所示:
INSERT INTO Foo ( Col ) VALUES ( 0xDEADBEEF )
但是,如果您是通过代码执行此操作,请使用SqlParameter
的参数化查询来避免注入攻击:
SqlCommand cmd = connection.CreateCommand();
cmd.CommandText = "INSERT INTO Foo ( Col ) VALUES ( @col )";
cmd.Parameters.Add("@col", SqlDbType.VarBinary).Value = new Byte[] { 0xDE, 0xAD, 0xBE, 0xEF };
cmd.ExecuteNonQuery();