2014-09-30 56 views
1

不相容我与查询我想实现我的.NET代码INT与文本

这里的问题是我需要实现

insert into audit (username, action, editdate) 
values(@username, 
     'user=' + @user + ' deleted comboid = convert(varchar(MAX),' + @comboid + ') of ' 
     + @distributorname, GETDATE()) 

查询,其中comboidint类型

问题是错误,我得到:

操作数类型冲突:INT I s与文本不兼容

问题是无论我如何投射或转换表达式,我总是会得到这个错误。

有什么想法?

+1

你应该用适当的** **参数化您的查询,以避免SQL注入漏洞! – 2014-09-30 12:45:33

+3

要做的第一件事:停止构建像那样的SQL。相反,使用参数化的SQL,各种事情会更好。 – 2014-09-30 12:45:41

+0

您可以添加试图构建此查询的C#代码吗?上面的代码中有一些不明确的地方。 – Steve 2014-09-30 12:50:32

回答

0

'user=' + @user + ' deleted comboid = convert(varchar(MAX),' + @comboid + ') of ' + @distributorname 

说, “行动” 值你在错误的地方convert。它现在将成为结果字符串的一部分。

你大概的意思是:

'user=' + @user + ' deleted comboid = ' + convert(varchar(MAX), @comboid) + ' of ' + @distributorname 
+0

谢谢,我没有意识到它 – Ange1 2014-09-30 13:50:19

0

使用CONCAT

insert into audit (username, action, editdate) 
values(
    @username, 
    CONCAT('user=', @user, ' deleted comboid = convert(varchar(MAX),', @comboid, ') of '), 
    GETDATE() 
) 
+0

它不承认concat函数 – Ange1 2014-09-30 13:12:26

+0

你正在使用什么数据库?我认为这是MS SQL。 – 2014-09-30 13:15:24

+0

不,我正在使用SQL服务器 – Ange1 2014-09-30 13:51:19