【发布时间】:2013-12-03 19:51:41
【问题描述】:
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)
【问题讨论】:
-
SQL Injection alert - 您应该不将您的 SQL 语句连接在一起 - 使用 参数化查询 来避免 SQL 注入
-
数据库是 SQLSERVER 。
-
简单的问题是为什么我会遇到此错误“不允许从数据类型 varchar 到 varbinary(max) 的隐式转换。使用 CONVERT 函数运行此查询。”
-
好吧,您的列是
VARBINARY,因此它需要 binary data 顾名思义 - 但您提供的最后一个值是双引号 ("........") 所以因此它是一个字符串,不能自动转换。要么你有错误的数据类型,它真的应该是一个字符串格式(例如VARCHAR(MAX)),或者你需要提供数据作为数据的二进制blob,而不是作为@中的字符串987654328@声明 -
是的,我认为你是对的,让我再试一次。
标签: c# sql-server visual-studio-2010