我有一个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'.
它应该作为字符串/文本处理,所以我不明白浮点错误。 这有什么不对?
答案 0 :(得分:3)
使用
SqlDbType.VarChar
而不是
SqlDbType.Text
SqlDbType.Text
:字符串。可变长度的非Unicode 数据流 最大长度为2 31 -1(或2,147,483,647)个字符。
答案 1 :(得分:0)
试试这个:
myCommand.Parameters.Add("@cn", SqlDbType.VarChar).Value=comp.Rows[i][1].ToString();
答案 2 :(得分:0)
您收到的错误来自SQL Server,只要SQL尝试将字符串值转换为数值,就会发生错误。
您没有显示任何相关的SQL代码,但我假设您将此值传递给存储过程,然后将其插入到数据表中。表中的参数类型和列类型也必须是VARCHAR
或TEXT
,否则SQL将尝试进行转换。
另外,请注意与数值进行参数比较;例如,如果您尝试进行比较,例如:
WHERE @CN = 1.234
SQL会尝试将您的VARCHAR
转换为浮点值。您可以使用ISNUMERIC
之类的方法来避免比较失败。