在SQL参数中未接受连字符“ - ”

时间:2011-05-11 12:21:44

标签: .net

我有这段代码

string strSQLQuery = "SELECT " + strFieldName + " FROM " + strTableName +
" WHERE " + strFieldName + " = @Value";

sqlCmd.CommandText = strSQLQuery;
sqlCmd.Connection = con;
sqlCmd.Parameters.AddWithValue("@Value", strFieldValue);
resultValue = sqlCmd.ExecuteScalar();

我的strFieldValue是“IGEM - 意大利”

如果我直接执行它而没有参数,则执行

string strSQLQuery = "SELECT " + strFieldName + " FROM " + strTableName +
" WHERE " + strFieldName + " = '" + strFieldName  + "'";

请告知

4 个答案:

答案 0 :(得分:1)

此代码的目的是什么?

您似乎构建了查询,但是您没有在字段名称中处理特殊字符,您应该将其分隔:

string strSQLQuery = 
    "SELECT [" + strFieldName + "] " +
    "FROM [" + strTableName + "] " +
    "WHERE [" + strFieldName + "] = @Value";

该查询即使在strFieldName = "IGEM-Italy"时也能正常工作,而如果字段名称包含连字符,则第一个查询将失败。

然而,这个语句将始终返回相同的内容,因为您将返回要过滤的字段。

您的第二个查询有:

" WHERE " + strFieldName + " = '" + strFieldName  + "'"

这不是一回事 - 我认为这是一个错字。

答案 1 :(得分:0)

也许你应该用单引号括起strFieldValue。此外,是数据类型字符串?

的strFieldValue

答案 2 :(得分:0)

我对.Net没有经验。

  • .AddWithValue(“Value”,...)没有@ maybe? - SORRY SEEMS WITH @。
  • 类型转换NVARCHARS?
  • Xxx而不是Value?值是SQL关键字左右。

答案 3 :(得分:-1)

我在SQL数据库中实际发现它是' - '连字符,但我发送的代码是EM Dash“ - ”