Вы делаете несколько вещей здесь неправильно:
@searchitem
. Это не сработает. Параметры должны иметь уникальные имена. CommandText
, как только вы закончите создание SQL. AND
, что недействительно синтаксис. Предложения по улучшению (не так само по себе, но не лучшая практика):
%
в этом параметре, вместо того, чтобы выполнять конкатенацию строк внутри SQL. LOWER
. Пример кода:
SqlCommand cmd = new SqlCommand();
StringBuilder sqlBuilder = new StringBuilder();
sqlBuilder.Append("SELECT name, memberid FROM members ");
var i = 1;
foreach (string item in keywords)
{
sqlBuilder.Append(i == 1 ? " WHERE " : " AND ");
var paramName = "@searchitem" + i.ToString();
sqlBuilder.AppendFormat(" Name LIKE {0} ", paramName);
cmd.Parameters.AddWithValue(paramName, "%" + item + "%");
i++;
}
cmd.CommandText = sqlBuilder.ToString();