如何使用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);
}
好的,假设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));
}
}
}