Member 13714370 Ответов: 1

При выборе данных(строк) из datagridview1 результаты, содержащие эти данные из базы данных, появятся в listview1.


При выборе данных(строк) из datagridview1 результаты, содержащие эти данные из базы данных, появятся в listview1.
Они будут фильтровать и сортировать выбранные данные.

Например:

-Вы выбираете симптомы
-Кашляющий
-Результаты(название заболевания), имеющие симптом кашля, который вы выбрали в datagridview1, будут автоматически отображаться в listview1.
-Вы выбираете другой симптом
-Хрипящий
-Результаты(название заболевания), которые имеют кашель и свистящее дыхание, выбранные вами в datagridview1, автоматически отобразятся в listview1, а те, у кого этих данных нет, автоматически исчезнут.

Я думаю, что это похоже на то, когда вы выбираете это слово. Они найдут его в таблице базы данных. Например, слово кашель или хрипение, или даже только буквы. И он автоматически отобразит его в другом datagridview.

Результаты также есть в базе данных.
Они получат эти данные в базе данных(MySql)

Я планирую просто получить эти данные в моей таблице словаря в базе данных. И есть такие колонки, как название болезни, Причины, Симптомы, Лечение и т. д.
Но единственная колонка, из которой я просто хочу получить данные, - это только симптомы и название болезни.


Я действительно не знаю синтаксиса. Я действительно не знаю, с чего начать. Пожалуйста помочь. Огромное спасибо. Надеюсь, вы понимаете мой вопрос. :)

Я попробовал его закодировать. Хе-хе. Но все так неправильно.

Что я уже пробовал:

 private void dataGridView1_SelectionChanged(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count != 0)
            {
                con.Open();
                cmd = new SqlCommand(@"Select * from DICTIONARY where Symptoms LIKE '% 
{0}%'", con);
                rdr = cmd.ExecuteReader();
                if (rdr.Read())
                {
                    dataGridView1.Rows.Add(rdr[0].ToString(), rdr[1].ToString());
                }

            List<string> selectedRows = new List<string>();

            foreach (DataGridViewRow row in dataGridView1.SelectedRows)
            {
                string currentRow = string.Empty;

                foreach (DataGridViewCell cell in row.Cells)
                {
                    currentRow += String.Format("{0} ", cell.FormattedValue);
                }

                selectedRows.Add(currentRow);
            }

            for (int i = 0; i < selectedRows.Count; i++)
            {
                this.listview1.Items.Add(selectedRows[i]);
            }

            }
        }

1 Ответов

Рейтинг:
0

Richard MacCutchan

Вы не добавляете имя симптома в свою команду SQL. То {0} конструкция используется String.Format и требует фактического имени параметра. Для команд SQL следует использовать параметризованные запросы. Кроме того, вы пытаетесь добавить результаты базы данных в DataGridView вместо ListView.


Member 13714370

Верен ли мой синтаксис? Потому что есть много ошибок. И мой код не соответствует тому, что я планировал сделать. Я думаю.

Richard MacCutchan

Нет, это не правильно:
cmd = new SqlCommand(@"Select * from DICTIONARY where Symptoms LIKE '%
{0}%'", con);

Как я уже сказал выше {0} это утверждение ничего не значит. Вам нужно заменить его именем параметра и добавить фактический текст в объект параметра, который вы добавляете в команду SQLCommand.