2014-09-30 48 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