nestede forespørgsler mod DB
Hejsa,Jeg er løbet ind i et problem med min objektstruktur, håber i kan hjælpe. Jeg har nogle brugere (klasser) som er gemt i en database, jeg vil nu gerne hente en liste ud med alle brugere, det gør jeg ved disse 4 metoder:
private void OpenDB()
{
if (this.conn.State == ConnectionState.Closed)
{
this.conn.Open();
}
}
private void CloseDB()
{
this.conn.Close();
}
public override List<User> LoadAllUsers()
{
OpenDB();
MySqlCommand command = conn.CreateCommand();
command.CommandText = "select user_id from wedding_user";
MySqlDataReader reader = command.ExecuteReader();
List<User> result = new List<User>();
while (reader.Read())
{
int userid = reader.GetInt32(0);
User user = LoadUser(userid);
result.Add(user);
}
CloseDB();
return result;
}
public override User LoadUser(int id)
{
OpenDB();
MySqlCommand command = conn.CreateCommand();
command.CommandText = "select user_id, user_name, user_password, user_firstname, user_lastname, user_description, user_mobile, user_phone, user_email from wedding_user where user_id = ?id";
command.Parameters.AddWithValue("?id", id);
MySqlDataReader reader = command.ExecuteReader();
User result = new User();
while (reader.Read())
{
result.Id = reader.GetInt32(0);
result.Username = reader.GetString(1);
result.Password = reader.GetString(2);
result.Firstname = reader.GetString(3);
result.Lastname = reader.GetString(4);
result.Description = reader.GetString(5);
result.Mobile = reader.GetString(6);
result.Phone= reader.GetString(7);
result.Email = reader.GetString(8);
}
CloseDB();
return result;
}
problemet er naturligvis at jeg i min "LoadUser" åbner en forbindelse, så kalder jeg loaduser, som også åbner den samme forbindelse.... og det kan man naturligvis ikke, nogle løsningsforslag??? Jeg er ikke meget for at skulle til at dublikere min sql til den der loader hele listen
