C#从SQL DataTable填充组合框

时间:2012-10-15 16:37:13

标签: c# sql

DataTable _dt = new DataTable();

using (SqlConnection _cs = new SqlConnection("Data Source=COMNAME; Initial Catalog=DATABASE; Integrated Security=True"))
{
    string _query = "SELECT * FROM Doctor";
    SqlCommand _cmd = new SqlCommand(_query, _cs);

    using (SqlDataAdapter _da = new SqlDataAdapter(_cmd))
    {
        _da.Fill(_dt);
    }
}
cbDoctor.DataSource = _dt;
foreach(DataRow _dr in _dt.Rows)
{
    cbDoctor.Items.Add(_dr["name"].ToString());
}

出现了错误......

结果是System.Data.DataRowView而不是数据库中的数据..

3 个答案:

答案 0 :(得分:5)

我还不确定您的代码中的确切错误是什么,但如果您还没有使用DataTable,则可以这样做:

using (SqlConnection sqlConnection = new SqlConnection("connstring"))
{
    SqlCommand sqlCmd = new SqlCommand("SELECT * FROM Doctor", sqlConnection);
    sqlConnection.Open();
    SqlDataReader sqlReader = sqlCmd.ExecuteReader();

    while (sqlReader.Read())
    {
        cbDoctor.Items.Add(sqlReader["name"].ToString());
    }

    sqlReader.Close();
}

有关详细信息,请查看SqlDataReader reference on MSDN

要找到您发布的原始代码中的问题,请提供您获得异常的哪一行的信息(或者是一个阻止应用程序编译的错误?)以及它的整个信息是什么。

答案 1 :(得分:2)

您还可以将组合框的DisplayMember属性指定为任何列名。 例如,如果要显示“名称”字段,则可以执行

Combobox1.DisplayMember="Name";

答案 2 :(得分:0)

我认为问题在于您尝试将多个列插入到一个comboBox(只能接受一列)中。调整SELECT语句,使其将所需的所有数据合并到一列中:

实施例: ''SELECT Name +''LastName +''+ ID AS'DoctorData'FROM Doctor'

通过使用+运算符,您可以组合数据库中的多个列,并将其表示为单个数据。我认为你的代码应该在那之后工作(你甚至可以评论foreach循环,我认为将数据源添加到你的comboBox就足够了)