3

我正在尝试将 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。有没有人有任何想法?

4

3 回答 3

5

首先:你不需要cmd.ExecuteNonQuery();

其次:如果您的Visit类有一个属性 PICKUP_ID,并且您使用的是Visit项目列表,那么您需要将实际添加Visits到您的列表中,而不仅仅是字符串,如下所示:

rows.Add(new Visit () {pickupid = reader["PICKUP_ID"].ToString()});

如果您只需要 id,那么您不妨只制作一个List<string>. 您发布的代码将起作用。

于 2012-12-01T02:20:56.383 回答
2

cmd.ExecuteNonQuery();不需要摆脱它是吗?

试试这个:

        while (reader.Read())
        {
            cmbPickupID.Items.Add(reader["PICKUP_ID"].ToString());
        }
于 2012-12-01T02:08:25.663 回答
1

我觉得你可以使用Reflection和其他一些东西。

我建议你使用Dapper.

您可以使用 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.

于 2013-11-07T23:21:29.977 回答