如何使用C#从sql server检索数据并将其放入组合框中

本文关键字:组合 数据 何使用 sql 检索 server | 更新日期: 2023-09-27 18:21:39

我在Visual Studio上创建了一个SQL数据库表。现在我想访问那个数据库,根据某一列读取它的值,并将这些值保存到组合框列表中。

例如,如果我有一个像这样的表

|StudentName    | Age    | ID    |
|---------------|--------|-------|
|A              | 19     | 1     |
|---------------|--------|-------|
|B              | 15     | 2     |
|---------------|--------|-------|
|C              | 20     | 3     |
|---------------|--------|-------|

还有一个名为nameCombo的组合框,我想要的是像这个一样的东西

nameCombo.Items.Add(A);
nameCombo.Items.Add(B);
nameCombo.Items.Add(C);

我该怎么做?谢谢

编辑

假设您已经将LINQ连接到SQL数据库。以下是您应该做些什么来更新您的组合框。这一切都要感谢斯塔克夫弗洛的那些了不起的家伙。

locationLinqToSQLDataContext db = new locationLinqToSQLDataContext();
var nameData = from name in db.Locations
               select new { name.StudentName };
foreach (var name in nameData)
    {
        fromTextBox.Items.Add(name.StudentName);
    }            

如何使用C#从sql server检索数据并将其放入组合框中

好的,假设LINQ,那么:

将其查询到列表中。

var myData = (from d in db.MyTable
              where d.Name.contains("A")
              select d).ToList();

然后将其分配给组合:

mycombo.datasource=myData;
mycombo.dataTextField="Name";
mycombo.dataValueField="ID";
mycombo.dataBind();

这只是即兴编的,但应该行得通。

或者,如果您真的想迭代这些项。

myData.foreach(delegate(MyTableItem i) 
{
    mycombo.add(new listitem(i.id,i.name));
});

如果您在windows窗体应用程序中需要它,这里有代码:

       DataTable dt = new DataTable("dataTable");
        dt.Columns.Add("Id", typeof(int));
        dt.Columns.Add("Name", typeof(string));
        //add DataRow
        DataRow row = dt.NewRow();
        row["Id"] = 1;
        row["Name"] = "One";
        dt.Rows.Add(row);
        //assign to ComboBox
        comboBox1.DataSource = dt;
        comboBox1.DisplayMember = "Name";
        comboBox1.ValueMember = "Id";

对于web应用程序,您可以看到另一个答案

这里有一个使用SqlConnection的解决方案(它天真地假设您不需要数据绑定)。当然,您必须用实际值替换"YourConnectionString"answers"YourTable"。

string connectionString = "YourConnectionString";
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    string query = "SELECT Name FROM YourTable";
    SqlCommand command = new SqlCommand(query, connection);
    using (SqlDataReader reader = command.ExecuteReader())
    {
        while (reader.Read())
        {
            // "0" refers to the 0th column in the result set.
            nameCombo.Items.Add(reader.GetString(0));
        }
    }
}