2

我的表包含 10 列。我需要使用 c# 插入一个列表。
我已经存储了多个成员的详细信息,对于每个计数,它必须在同一行中插入连续的详细信息。

  if (members.Count >= 1)

    {
         foreach (Members myList in members)
             {                             
            Command.Parameters.Add("first", SqlDbType.VarChar).Value = myList.first;
            Command.Parameters.Add("last", SqlDbType.VarChar).Value = myList.last;
            Command.Parameters.Add("age", SqlDbType.VarChar).Value = myList.age;
             }
    }

示例:对于 count=1,表格看起来像 "fName1","lName1",21

对于 count=2,表格看起来像 "fName1","lName1",21,"fname2","lName2",21

请帮忙。

4

1 回答 1

1

编码风格看起来模棱两可。您的 foreach 循环针对成员中的“成员”运行。很难理解正在尝试做什么。让我建议你重构你的代码,让类名是“成员”。您可以使用 ADO.Net 将成员放入 db 中(也有其他方法),如下所示 -

       using (SqlConnection connection = new SqlConnection(connectionString))
        {
            using (SqlCommand command = connection.CreateCommand())
            {
                //select just schema of the table.
                command.CommandText = "select * from members where 1=2;";
                using (SqlDataAdapter adapter = new SqlDataAdapter(command))
                {
                    using (SqlCommandBuilder builder = new SqlCommandBuilder(adapter))
                    {
                        using (DataTable dt = new DataTable())
                        {
                            foreach (Member item in memebers)
                            {
                                DataRow row = dt.NewRow();

                                row.SetField<string>("", item.FirstName);
                                row.SetField<string>("", item.LastName);
                                row.SetField<int>("", item.Age);
                                //
                                // number of SetField should be equal to number of selected columns.
                                //
                                dt.Rows.Add(row);
                            }
                            adapter.Update(dt);
                        }                         
                    }   
                }
            }
        }
于 2012-09-18T04:20:22.640 回答