Het probleem is dat u de verbinding die is geretourneerd door uw fabriekseigendom niet opslaat. Maar gebruik een eigenschap niet als een methode. Gebruik het in plaats daarvan op deze manier:
using (var con = Services.conn)
{
Services.conn.Open();
Services.DB_Select("..a short select statement..", con ));
//Services.conn.Close(); unnecessary with using
}
Gebruik dus dezelfde verbinding in het gebruik die is geretourneerd door de eigenschap (of beter gemaakt in het gebruik) en geef deze door aan de methode die deze gebruikt. Overigens is het niet de beste gewoonte om een eigenschap als fabrieksmethode te gebruiken.
Maar naar mijn mening is het veel beter om de verbinding te maken waar u deze gebruikt, de beste plaats is in de using
uitspraak. En gooi de con
eigendom naar de vuilnisbak, het is zinloos en een bron voor vervelende fouten.
public static void DB_Select(string s, params List<string>[] lists)
{
try
{
using(var conn = new MySqlConnection(Services.ServerConnection))
{
conn.Open();
MySqlCommand cmd = conn.CreateCommand();
cmd.CommandText = s;
using( var sqlreader = cmd.ExecuteReader())
while (sqlreader.Read())
{
if (sqlreader[0].ToString().Length > 0)
{
for (int i = 0; i < lists.Count(); i++)
{
lists[i].Add(sqlreader[i].ToString());
}
}
else
{
foreach (List<string> save in lists)
{
save.Add("/");
}
}
} // unnecessary to close the connection
} // or the reader with the using-stetement
}
catch (Exception ex)
{
MessageBox.Show("Error while selecting data from database!\nDetails: " + ex);
}
}