2013-01-08 53 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); 
} 

你的问题很模糊,但多数民众赞成我将尽...