我正在尝试获取一个下拉列表来显示来自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();
}
答案 0 :(得分:2)
这将是一个评论,但我没有声誉,
您收到了什么错误消息?
您的连接字符串已将可信连接设置为true并且您正在提供凭据, 删除其中一个。
答案 1 :(得分:2)
这里有一些问题:
您应该将此代码移至Page_Load
方法。我假设您希望在为用户加载页面时填充此DropDownList
。否则,DropDownList
永远不会填充MySQL数据库中的数据,因此当没有可能更改的索引时,您将无法触发SelectedIndexChanged
事件。
MySQL Connector / Net使用unmanaged resources。这些应该在完成使用时处理。 .NET Framework提供了一种优雅的方法来确保使用非托管资源的对象以 using statements 的形式处理。最好使用它们。
当MySqlConnection
,MySqlDataReader
等不仅应该在使用时处理掉,而且它们也应该关闭。值得庆幸的是,当在这些对象上调用dispose()
时,也会调用close()
方法。
所以拼凑这一切产生了这段代码:
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();
}
}
}
}
}
我希望这一切都有帮助。如果您需要任何澄清,我很乐意提供。