この動的SQLコードを使用します。
問題は、実行時に cmd.CommandText 値をチェックすると、@ID_USER と @SEARCH が SQL クエリで未加工のままになることです。
"SELECT Comment FROM Comments WHERE UserId = @ID_USER AND Comment like '% @SEARCH %'"
そのため、構文は正しく、VS2012 の cmd.Parameters ResultView .SqlValue は、@USER_ID と @SEARCH の正しい入力値を提供してくれます。ありがとうございます。
{
List<string> searchResults = new List<string>();
//Get current user from default membership provider
MembershipUser user = Membership.Provider.GetUser(HttpContext.User.Identity.Name, true);
if (user != null)
{
if (!string.IsNullOrEmpty(searchData))
{
// SqlCommand cmd = new SqlCommand("Select Comment from Comments where UserId = '" + user.ProviderUserKey + "' and Comment like '%" + searchData + "%'", _dbConnection);
/**********************************************/
_dbConnection.Open();
const string QUERY =
@"SELECT Comment" +
@" FROM Comments" +
@" WHERE UserId = @ID_USER" +
@" AND Comment like '% @SEARCH %'";
var cmd = new SqlCommand(QUERY, _dbConnection);
cmd.Parameters.AddWithValue("@ID_USER", user.ProviderUserKey.ToString());
cmd.Parameters.AddWithValue("@SEARCH", searchData.ToString());
/**********************************************/
SqlDataReader rd = cmd.ExecuteReader();
while (rd.Read())
{
searchResults.Add(rd.GetString(0));
}
rd.Close();
_dbConnection.Close();
}
}
return View(searchResults);
}