从Mysql数据库中检索记录并将其显示在组合框中

时间:2014-06-05 07:40:44

标签: c# datatable

我有一个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

1 个答案:

答案 0 :(得分:1)

您有两个具有相同名称的变量。 (dt)一个定义为字符串,if块内的另一个定义为数据表。您返回空字符串,当然,当您尝试分配组合的DataSource时,这不起作用

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语句