我有一个T-SQL和查询:string queryString = @"SELECT AGENT.Number, PERSON.LoginName, AGENT.EnterpriseName FROM Agent AGENT INNER JOIN Person PERSON ON AGENT.PersonID = PERSON.PersonID WHERE LOWER(EnterpriseName) LIKE @entname";string connStr = null;try{ connStr = ConfigurationManager.ConnectionStrings["DB"].ConnectionString + ToInsecureString(Decrypt(ConfigurationManager.AppSettings["admin"])) + ";";}catch (Exception ex){ Logs.WriteMessage("Error while making connStr " + ex.TargetSite + ex.StackTrace + ex.ToString());}try{ using (SqlConnection connection = new SqlConnection(connStr)) { connection.Open(); using (SqlCommand command = new SqlCommand(queryString, connection)) { SqlParameter param = new SqlParameter { ParameterName = "@entname", Value = "'%" + agentName + "%'" }; command.Parameters.Add(param); using (SqlDataReader reader = command.ExecuteReader()) { while (reader.Read()) { login = (string)reader[1]; userID = (string)reader[0]; } } } connection.Close(); }}这行不通。我没有得到任何结果,但是当我在查询中使用值时,我得到了正确的结果。@parameter参数未替换为值,因此查询失败。请给我一个提示。@entname当我停在断点处并看到查询时,它看起来是:SELECT AGENT.Number, PERSON.LoginName, AGENT.EnterpriseName FROM Agent AGENT INNER JOIN Person PERSON ON AGENT.PersonID = PERSON.PersonID WHERE LOWER(EnterpriseName) LIKE @entname所以什么都没有改变。
1 回答
慕虎7371278
TA贡献1802条经验 获得超4个赞
参数@entname不会替换为值,因此查询失败。
这不是参数的工作方式。参数标记与匹配的参数值一起保留在发送到 SQL Server 的查询中。@entname
因此,由于存在这种误解,您正在引用参数值,就好像它将要粘贴到SQL查询中一样:
Value = "'%" + agentName + "%'"
你不应该这样做。相反,做
Value = "%" + agentName + "%"
- 1 回答
- 0 关注
- 151 浏览
添加回答
举报
0/150
提交
取消