【问题标题】:How to get a key from a specific database row when I double click an item on a list?当我双击列表中的项目时,如何从特定数据库行中获取密钥?
【发布时间】:2018-12-05 23:13:03
【问题描述】:

基本上我有这个学生列表(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);
            }
        }

【问题讨论】:

    标签: c# sql database winforms


    【解决方案1】:

    在要连接的字符串的末尾添加空格。现在这个部分:

                "columns" +
                "FROM" +
    

    会给你“columnsFROM”,这显然是不好的 SQL。

    其他一些建议:

    • 添加错误处理。您从中获得的异常应该可以为您提供有关问题所在的线索。
    • 使用参数而不是连接字符串值。它将保护您免受 SQL 注入攻击并为您处理格式。
    • 如果没有明确的顺序,请勿使用ROW_NUMBER()。无法保证您将按照与之前保存的顺序相同的顺序获取行。请改用 ID 列。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-29
      • 2017-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-22
      • 2018-08-27
      • 1970-01-01
      相关资源
      最近更新 更多