2014-01-14 108 views
2

我有一個csv從哪裏導入數據到數據庫。參數化的sql查詢問題

myCommand.Parameters.Add("@cn", SqlDbType.Text); 
myCommand.Parameters["@cn"].Value = comp.Rows[i][1].ToString(); 

在案件comp.Rows[i][1]X'496e626randomcharacters'我收到此錯誤:The floating point value '496e626' is out of the range of computer representation (8 bytes). Incorrect syntax near '496e626'.

應該爲字符串/文本來處理,所以我不明白浮點錯誤。 這裏有什麼問題?

+1

查詢是怎樣的? – Andrei

+1

你在使用'DataTable'嗎?什麼是列[1]的類型? –

+1

您是否嘗試過使用'AddWithValue(「@ cn」,comp.Rows [i] [1])''? – James

回答

3

使用

SqlDbType.VarChar 

而不是

SqlDbType.Text 

SqlDbType.Text : String. A variable-length stream of non-Unicode data with a maximum length of 2 31 -1 (or 2,147,483,647) characters.

Ref

0

試試這個:

myCommand.Parameters.Add("@cn", SqlDbType.VarChar).Value=comp.Rows[i][1].ToString(); 
0

你所得到的錯誤是從SQL Server來了,每當發生SQL試圖將字符串值轉換成數值。

您沒有顯示任何相關的SQL代碼,但我假設您將此值傳遞給存儲過程,然後將其插入到數據表中。表中的參數類型和列類型都需要爲VARCHARTEXT,否則SQL將嘗試執行轉換。

另外,要小心與您的參數與數值進行比較;例如,如果你試圖做這樣的比較:

WHERE @CN = 1.234 

SQL會嘗試轉換您VARCHAR爲浮點值。你可以使用像ISNUMERIC這樣的方法來避免比較失敗。