填充我的下拉列表C#asp.net

时间:2013-11-19 00:35:46

标签: c# mysql asp.net drop-down-menu

我正在尝试获取一个下拉列表来显示来自MYSQL数据库的数据,数据库表名是Pet,我正在尝试从Specie获取信息。 现在代码对我来说看起来不错,但它没有运行所以它总是最好让另一双眼睛看它。 谢谢, 所有帮助表示赞赏。 连接字符串

   MySqlConnection cs = new MySqlConnection(@"Data Source = 000.000.00.000;username=benoatsc_admin;password=****; Initial Catalog = dbname; Integrated Security = true");

下拉代码

 protected void DropDownList1_SelectedIndexChanged(object sender, EventArgs e)
    {
        MySqlCommand cd = new MySqlCommand("SELECT * FROM Pet", cs);
        cs.Open();
        MySqlDataReader ddl = cd.ExecuteReader();

        DdPetList.DataSource = ddl;
        DdPetList.DataValueField = "Specie";
        DdPetList.DataTextField = "Specie";
        DdPetList.DataBind();
        cs.Close();
        cs.Dispose();
    }

2 个答案:

答案 0 :(得分:2)

这将是一个评论,但我没有声誉,

您收到了什么错误消息?

您的连接字符串已将可信连接设置为true并且您正在提供凭据, 删除其中一个。

答案 1 :(得分:2)

这里有一些问题:

  1. 您应该将此代码移至Page_Load方法。我假设您希望在为用户加载页面时填充此DropDownList。否则,DropDownList永远不会填充MySQL数据库中的数据,因此当没有可能更改的索引时,您将无法触发SelectedIndexChanged事件。

  2. MySQL Connector / Net使用unmanaged resources。这些应该在完成使用时处理。 .NET Framework提供了一种优雅的方法来确保使用非托管资源的对象以 using statements 的形式处理。最好使用它们。

  3. MySqlConnectionMySqlDataReader等不仅应该在使用时处理掉,而且它们也应该关闭。值得庆幸的是,当在这些对象上调用dispose()时,也会调用close()方法。

  4. 所以拼凑这一切产生了这段代码:

    protected void Page_Load(object sender, EventArgs e)
    {
        using (var conn = new MySqlConnection(/* Your connection string here */))
        {
            conn.Open();
            using (var cmd = new MySqlCommand("SELECT * FROM Pet", conn))
            {
                using (var reader = cmd.ExecuteReader())
                {
                    if (reader.HasRows)
                    {
                        DropDownList1.DataSource = reader;
                        DropDownList1.DataValueField = "Specie";
                        DropDownList1.DataTextField = "Specie";
                        DropDownList1.DataBind();
                    }
                }
            }
        }
    }
    

    我希望这一切都有帮助。如果您需要任何澄清,我很乐意提供。