簡體   English   中英

參數化的sql查詢問題

[英]parameterized sql query issue

我從那里將數據導入數據庫的csv。

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'. The floating point value '496e626' is out of the range of computer representation (8 bytes). Incorrect syntax near '496e626'.

應該將其作為字符串/文本來處理,所以我不理解浮點錯誤。 怎么了

采用

 SqlDbType.VarChar

而不是

 SqlDbType.Text

SqlDbType.Text :字符串。 非Unicode數據的可變長度流,最大長度為2 31 -1(或2,147,483,647)個字符。

參考

嘗試這個 :

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

您收到的錯誤來自SQL Server,並且在SQL嘗試將字符串值轉換為數字值時發生。

您沒有顯示任何相關的SQL代碼,但是我假設您正在將該值傳遞到存儲過程中,然后該存儲過程將其插入數據表中。 表中的參數類型和列類型也都必須為VARCHARTEXT ,否則SQL會嘗試進行轉換。

另外,請注意將您的參數與數值進行比較; 例如,如果您嘗試進行如下比較:

WHERE @CN = 1.234

SQL將嘗試將VARCHAR轉換為浮點值。 您可以使用ISNUMERIC方法來避免比較失敗。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM