【问题标题】:How to add items in ComboBox from database如何从数据库中添加 ComboBox 中的项目
【发布时间】:2015-08-14 14:09:25
【问题描述】:

我试图在组合框 (cmbInstructor) 中添加项目,即姓氏 (instructorLN) 但是,我的代码似乎不起作用。关于我哪里出错的任何想法?

private void cmbInstructor_SelectedIndexChanged(object sender, EventArgs e)
{
    MySqlConnection conn = new MySqlConnection(mycon);
    MySqlCommand cmd = new MySqlCommand("SELECT * FROM instructor WHERE instructorType ='" + labelClass.Text + "'", conn);
    string instructorLN = "";

    conn.Open();
    MySqlDataReader myReader = null;
    myReader = cmd.ExecuteReader();

    while (myReader.Read())
    {
        instructorLN = myReader["instructorLN"].ToString();
    }
    cmbInstructor.Items.Add(instructorLN);
}

【问题讨论】:

    标签: c# visual-studio-2013 combobox items


    【解决方案1】:

    据我所知,您正在添加您的SELECT 返回的最后一个值。

    移动你的

    cmbInstructor.Items.Add(instructorLN);
    

    将while语句换成;

    while (myReader.Read())
    {
        cmbInstructor.Items.Add(myReader["instructorLN"].ToString());
    }
    

    顺便说一句,您应该始终使用parameterized queries。这种字符串连接对SQL Injection 攻击开放。

    也可以使用using statement 来自动配置你的连接和命令和阅读器。

    using(var conn = new MySqlConnection(mycon))
    using(var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "SELECT * FROM instructor WHERE instructorType = @type";
        cmd.Parameters.Add("@type", labelClass.Text);
    
        conn.Open();
        using(var myReader = cmd.ExecuteReader())
        {
            while (myReader.Read())
            {
                 cmbInstructor.Items.Add(myReader["instructorLN"].ToString());
            }
        }
    }
    

    【讨论】:

    • 感谢您的帮助...但项目似乎仍然无法显示
    • @jgf 为什么在组合框的SelectedIndexChanged 事件中使用此代码?您是否调试过代码并查看发生了什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    • 2017-06-19
    • 1970-01-01
    • 2015-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多