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 に答える