C # Использование LIKE, чтобы увидеть, если X содержит Y - PullRequest
0 голосов
/ 13 февраля 2009

Я унаследовал код ниже, но я озадачен, так как код работает просто отлично, но я не уверен, что это правильно. Я раньше не пользовался LIKE, поэтому не могу решить, стоит ли мне это менять. Как это выглядит для вас?

Код для фильтра в БД, который проверяет, содержит ли значение X значение Y, находит X * в X (например, совпадение будет F * в Fun и Fan) и X не содержит Y.

Спасибо за ваше мнение.

foreach (ListViewItem item in listView1.Items)
                {
                    strStuff += item.Text;
                    object o = item.SubItems[1].Tag;
                    switch ((int)item.SubItems[1].Tag)
                    {
                        case 0:
                            strStuff += " LIKE '%" + item.SubItems[2].Text + "%'"; //contains
                            break;
                        case 1:
                            strStuff += " LIKE '" + item.SubItems[2].Text + "'"; //allows * wildcard
                            break;
                        case 2:
                            _strCriteria += " NOT LIKE '%" + item.SubItems[2].Text + "%'"; //doesn't contain
                            break;

                        default:
                            strStuff += "\"" + item.SubItems[2].Text + "\"";
                            break;
                    }
                    strStuff += " And ";
                }

Ответы [ 3 ]

1 голос
/ 13 февраля 2009

Избегайте текстовых строк, чтобы избежать внедрения SQL, но в остальном у вас все хорошо. LIKE в SQL выполняет сопоставление с образцом строки и принимает различные символы подстановки, такие как «%» и «_».

Подробную информацию можно найти здесь и здесь .

1 голос
/ 13 февраля 2009

Хотя это выглядит так, как будто оно должно работать по назначению, вам действительно следует избегать текста, добавляемого в предположительно строку SQL.

0 голосов
/ 13 февраля 2009

Это выглядит правильно для меня, вы должны дать больше контекста, чтобы сказать, если это действительно правильно. Как уже отмечалось, вам нужно искать возможные атаки с использованием SQL-инъекций (это веб-приложение)

Чтобы понять функциональность ключевого слова Sql LIKE, просто попробуйте выполнить несколько запросов к базе данных напрямую.

...