Mahendrangood@gmail.com Ответов: 3

как создать поисковую систему типа "google search engin" с использованием C# и MSSQL?


SqlConnection con = new SqlConnection(System.Configuration.ConfigurationManager.AppSettings["ConnectionString"]);
            con.Open();
            SqlCommand cmd = con.CreateCommand();
            cmd.CommandType = CommandType.Text;
            cmd.CommandText = "select * from Sawdusts where Name like('" + textBox1.Text + "%')";
            cmd.ExecuteNonQuery();
            DataTable dt = new DataTable();
            SqlDataAdapter da = new SqlDataAdapter(cmd);
            da.Fill(dt);
            dataGridView2.DataSource = dt;
            con.Close();


это работает только с базой данных фильтрации

мне нужно, как поисковая система google, я набираю средство "а", начиная все слова" а".

Simon_Whale

это winform? это веб-страница? это WPF? пожалуйста нам нужна дополнительная информация чтобы помочь вам так как то что вам нужно это скорее визуальная проблема чем фрагмент кода который вы предоставили

3 Ответов

Рейтинг:
25

OriginalGriff

Для начала, не делай этого так! Не объединяйте строки для построения команды SQL. Это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого используйте параметризованные запросы.

Во-вторых, я бы посоветовал вам взглянуть на Полный текст seraching[^] вместо того, чтобы просто использовать LIKE - ваш существующий код хочет получить точное совпадение в начале строки, а не что-то похожее на Google.

Полнотекстовый поиск не даст Вам Google - но они вложили огромное количество человеко-часов в свою поисковую систему, так что маловероятно, что вы сможете дублировать ее в разумные сроки! :смеяться:
Но это лучше, чем просто нравится.


Рейтинг:
1

Sergey Alexandrovich Kryukov

Что касается вопроса "Как создать поисковую систему", то ответ будет следующим: путем выполнения соответствующей работы по разработке программного обеспечения. Все зависит от того, где вы хотите провести поиск. Если вам нужен поиск в Интернете или набор файлов, почему вы делаете что-то с реляционной базой данных? :-)

Только одно: представьте, что у вас уже есть поисковая система со всеми функциями программного обеспечения Google. Сможете ли вы выполнить тот же поиск, что и Google at http:/www.google.com-что? - Нет! Это потому, что у вас нет данных Google. Google собирает и поддерживает большое количество хэшированных данных, собранных из интернета, "второй паутины". Вы имеете доступ к этим данным только через сайт Google.

Что касается того, как вы работаете с SQL…

Ваш подход неверен с самого начала. Запрос, составленный путем конкатенации со строками, взятыми из пользовательского интерфейса. Мало того, что повторяющаяся конкатенация строк неэффективна (потому что строки неизменный; должен ли я объяснять, почему это делает повторную конкатенацию плохой?), но есть гораздо более важная проблема: она открывает двери для хорошо известного эксплойта под названием SQL-инъекция.

Вот как это работает: http://xkcd.com/327.

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

Что же делать? Просто читайте об этой проблеме и главном средстве ее решения: параметризованные операторы: http://en.wikipedia.org/wiki/SQL_injection.

С помощью ADO.NET, используйте это: http://msdn.microsoft.com/en-us/library/ff648339.aspx.

Пожалуйста, смотрите мои прошлые ответы для получения более подробной информации:
ЭРОР в обновление в COM.Метод executenonquery();,
привет имя не отображается в названии?.

—СА


Рейтинг:
1

Dave Kreskowiak

То, что вы описываете, не является "Google, как поисковая система". То, что у вас есть,-это окно предложений типа вперед.

Ваша реализация будет поддерживать только одно слово и только в том случае, если человек наберет начало слова и получит точное написание.

Сначала о главном. Google для "атаки SQL-инъекций", чтобы узнать, почему то, как вы написали свой SQL-запрос, настолько плохо, что вы рискуете уничтожить свою базу данных. Затем Google для "C# paramterized sql queries" для того, что с этим делать.