我有一個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 關注
- 179 瀏覽
添加回答
舉報
0/150
提交
取消