Visual Studio - Outlook 插件 - 从 SQL 数据库中填充组合框,为什么字符串值 return 是这样的?

Visual Studio - Outlook addin - Fill Combobox from SQL database and why does string value return like this?

我正在使用 MS Visual Studio 创建 outlook 插件。从功能区,用户单击一个按钮,打开一个带有一些组合框的 winform(称为 NewEntry),我想用来自 SQL 数据库的数据填充这些组合框。

为了填充单个组合框(命名公司),我的代码是:

    public NewEntry()
    {
        InitializeComponent();
        DataTable dt = new DataTable();

        cnn.Open();
        SqlCommand cmd = new SqlCommand("SELECT Name FROM PrivateContractors", cnn);
        using (SqlDataAdapter da = new SqlDataAdapter(cmd))
        {
            da.Fill(dt);
        }
        cmd.Dispose();
        cnn.Close();
        Companies.DataSource = dt;
        try
        {
            foreach (DataRow dr in dt.Rows)
            {
                Companies.Items.Add(Convert.ToString(dr["name"])); //this is line 67
            }
        }
        catch (Exception e)
        {
            MessageBox.Show(Convert.ToString(e));
        }
    }

这是异常信息:

随后打开表单时,我的 ComboBox 填充了预期数量的字段,但它们都被命名为 System.Data.DataRowView

当我删除 foreach 语句时,没有出现异常,但组合框值仍然是 System.Data.DataRowView

有谁知道我哪里出错了,我可以做些什么来纠正这个错误?

解决方法在这里:

        cnn.Open();
        SqlCommand cmd = new SqlCommand("SELECT Name FROM PrivateContractors", cnn);
        SqlDataReader dataReader = cmd.ExecuteReader();

        while (dataReader.Read())
        {
            Companies.Items.Add(Convert.ToString(dataReader["Name"]));
        }
        dataReader.Close();
        cmd.Dispose();
        cnn.Close();
    }