2013-01-08 52 views
-5

我在執行數據庫時遇到了一些問題,這是通過循環兩個我擁有的集合來實現的。請注意,這僅僅是一個例子。如何通過收集循環並保存到數據庫

一號集合包括:性別 - 男,女 第2集包括:名字 - 約翰,詹姆斯,麥克,斯泰西,保

我用for循環,例如:

for (int i = 0; i < genders.count; i++) 
{ 
    for (int j = 0, j < names.count; j++) 
    { 
     //call to stored procedure there 
     //parameters 
     //execute 
    } 
} 

燦任何人建議如何以不同的方式做到這一點?

+4

如何做_what_有所不同?你想解決什麼問題? – Oded

+1

什麼問題?什麼數據庫? – PeteH

+1

我會說這是一種與數據庫交互的非常低效的方式。最好創建一個查詢並將其發送到數據庫,或者建立一組參數並將它們發送到數據庫。 [SQL Server數組和列表](http://www.sommarskog.se/arrays-in-sql.html)是一個很好的閱讀,即使您不在SQL Server上。 – Oded

回答

3

我沒有看到問題,但如果您問是否可以改進您的方法,是的。

我會簡單地使用具有這些屬性的類(包含性別)。

class Person 
{ 
    public bool IsFemale { get; set; } 
    public string Name { get; set; } 
} 

現在你可以創建一個單一收集,例如List<Person>和環路。

var persons = new List<Person>() { 
    new Person{IsFemale=false, Name="john"},new Person{IsFemale=false, Name="james"}, 
    new Person{IsFemale=true, Name="stacy"},new Person{IsFemale=true, Name="paula"} 
}; 

foreach(Person p in persons) 
{ 
    //call to stored procedure there 
    //parameters 
    //execute 
} 

編輯:如果您有與ADO.NET部分的問題,這裏有一個例子:

using (var con = new SqlConnection(connectionString)) 
using (var cmd = new SqlCommand("StoredProcedureName", con)) 
{ 
    cmd.CommandType = CommandType.StoredProcedure; 
    cmd.Parameters.Add("@Gender", typeof(string)); 
    cmd.Parameters.Add("@Name", typeof(string)); 
    con.Open(); 
    foreach (var person in persons) 
    { 
     cmd.Parameters["@Gender"].Value = person.IsFemale ? "female" : "male"; 
     cmd.Parameters["@Name"].Value = person.Name; 
     cmd.ExecuteNonQuery(); 
    } 
} 
0

首先,爲什麼不創建自己的類?

class Person 
{ 
    private String name; 
    private String sex; 

    public Person(String name, String sex) 
    { 
     this.name = name; 
     this.sex = sex; 
    } 

    public String Name 
    { 
     get { return name; } 
     set { name = value; } 
    } 

    public String Sex 
    { 
     get { return sex; } 
     set { sex = value; } 
    } 
} 

然後創建人

List<Person> people = new List<Person>(); 
people.add(new Person("Ashley", "Male")); 

然後foreach循環列表...

foreach(Person p in people) 
{ 
Console.WriteLine(p.Name + " " + p.Sex); 
} 

你的問題很模糊,但多數民衆贊成我將盡...