我试图将SQL语句的结果放入表单上的组合框中。我已经在网上搜索了一个答案,但我还能做得更远:
using (SqlCeConnection c = new SqlCeConnection(
Properties.Settings.Default.CW2_DBConnectionString))
{
c.Open();
List<Visit> rows = new List<Visit>();
SqlCeCommand cmd = c.CreateCommand();
cmd.CommandText = "SELECT PICKUP_ID FROM PICKUP";
c.Open();
cmd.ExecuteNonQuery();
SqlCeDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
}
cmbPickupID.Items.Add(rows);
}
我不确定在while循环中放入什么。我确实有类似的东西:
rows.Add(reader["PICKUP_ID"].ToString());
但显然它没有用。 Visit类已设置并获取VisitID。有没有人有任何想法?
答案 0 :(得分:5)
首先关闭:您不需要cmd.ExecuteNonQuery();
其次:如果您的Visit
类具有属性PICKUP_ID,并且您使用的是Visit
项列表,那么您需要将实际Visits
添加到列表中,而不仅仅是字符串,像这样:
rows.Add(new Visit () {pickupid = reader["PICKUP_ID"].ToString()});
如果你只需要id,那么你也可以只做一个List<string>
。您发布的代码将起作用。
答案 1 :(得分:2)
摆脱cmd.ExecuteNonQuery();
不需要它吗?
试试这个:
while (reader.Read())
{
cmbPickupID.Items.Add(reader["PICKUP_ID"].ToString());
}
答案 2 :(得分:1)
我可以使用Reflection
和其他一些东西。
我建议您使用Dapper
。
您可以使用Dapper将一个查询的结果转换为一个类。
使用短小精灵这样做:
1:右键点击Visual studio
中的项目,然后选择Manage Nuget Packages
。
2:在search Online
文本框中输入Dapper。
3:在网上搜索此DLL后,您可以安装它。(您最常连接到互联网)。
4:创建Domain Class
private class DomainClass
{
public int Id { get; set; }
public string Name { get; set; }
//public int Sex { get; set; }
public SexEnum sex { get; set; }
}
5:如果你有一些字段大多数转换为某个具有不同类型的字段(枚举类型)
喜欢Sex
字段。
6:创建连接字符串和sqlConnection
对象:
var connectionStr = "Server=ArdalanShahgholiPC;Database=Dapper;User Id=sa;Password=sa;";
SqlConnection sqlConn = new SqlConnection(connectionStr);
7:并且使用Dapper.SqlMapper
执行并将查询转换为您的域类。
IList<DomainClass> TestList = Dapper.SqlMapper.Query<DomainClass>(
sqlConn, "Select * From ATest").ToList();
最后,您可以使用TestList
。