Как получить ключ из определенной строки базы данных, когда я дважды щелкаю элемент в списке? - PullRequest
0 голосов
/ 06 декабря 2018

В основном у меня есть этот список учеников (alunos), и я хочу дважды щелкнуть по одному из учеников, и я хочу, чтобы он отобразил MessageBox, содержащий:

Student No.: {student no. from the selected student here}
Name: {student name from the selected student here}
etc...

Вот код, который у меня есть:

void lstAlunos_MouseDoubleClick(object sender, MouseEventArgs e)
        {
            string query = "SELECT * FROM (" +
                "SELECT" +
                "ROW_NUMBER() AS rownumber," +
                "columns" +
                "FROM Alunos" +
                ") AS foo" +
                "WHERE rownumber = " + lstAlunos.SelectedIndex;

            using (connection = new SqlConnection(connectionString))
            using (SqlCommand command = new SqlCommand(query, connection))
            using (var reader = command.ExecuteReader())
            {
                connection.Open();

                reader.Read();
                string numAluno = reader.GetString(0);
                string nomeAluno = reader.GetString(1);
                string apelidoAluno = reader.GetString(2);
                string contactoAluno = reader.GetString(3);
                string emailAluno = reader.GetString(4);
            }
            int index = this.lstAlunos.IndexFromPoint(e.Location);
            if (index != System.Windows.Forms.ListBox.NoMatches)
            {
                MessageBox.Show("Nome: " + nomeAluno);
            }
        }

1 Ответ

0 голосов
/ 06 декабря 2018

Добавьте пробелы к концам строк, которые вы объединяете.Прямо сейчас этот сегмент:

            "columns" +
            "FROM" +

даст вам «columnsFROM», что явно является плохим SQL.

Некоторые другие предложения:

  • Добавить обработку ошибок.Исключение, которое вы получили из этого, должно дать вам представление о том, в чем проблема.
  • Используйте параметры вместо объединения строковых значений.Он защитит вас от атак SQL-инъекций и позаботится о форматировании.
  • Не используйте ROW_NUMBER() без какого-либо явного порядка.Нет гарантии, что вы получите строки в том же порядке, в котором они были сохранены ранее.Вместо этого используйте столбец идентификатора.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...