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
而不是数据库中的数据..
答案 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就足够了)