从Mysql数据库检索记录,并显示在一个组合框中

本文关键字:一个 组合 检索 数据库 Mysql 记录 显示 | 更新日期: 2023-09-27 18:06:44

我有一个DbConnect类,它查询MySQL数据库并将结果存储到一个数据表中-就像这样:

public DataTable selectCombo()
{
        string query = "SELECT DISTINCT month FROM printer_count";
        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            DataTable dt = new DataTable();
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            da.Fill(dt);
        }
        this.CloseConnection();
        return dt;
 }

现在如何检索数据表从类到组合框主表单?我能做这样的事吗?

ComboBox1.DataSource = dbConnect();
ComboBox1.DisplayMember = "Name";    // column name to display

从Mysql数据库检索记录,并显示在一个组合框中

您有两个同名的变量。(dt)一个定义为字符串,另一个在if块中定义为数据表。您返回空字符串,当然,当您试图分配组合

的数据源时,这无法工作
public DataTable selectCombo()
{
       DataTable dt = new DataTable();
       string query = "SELECT DISTINCT month FROM printer_count";
        if (this.OpenConnection() == true)
        {
            MySqlCommand cmd = new MySqlCommand(query, connection);
            MySqlDataAdapter da = new MySqlDataAdapter(cmd);
            da.Fill(dt);
        }
       this.CloseConnection();
       return dt;
 }

现在你可以写

....
ComboBox1.DisplayMember = "Name";
ComboBox1.DataSource = selectCombo();
.....

这个代码也不是很安全。如果由于任何原因,您得到一个异常,CloseConnection将不会被调用,留下一个打开的连接,这对系统的稳定性是非常有问题的。但是,修复该问题需要对OpenConnection代码采用不同的方法。而不是true,这个方法应该返回MySqlConnection对象,这样你的调用代码可以在连接实例

周围应用using语句