sql >> Database >  >> RDS >> Mysql

C# Mysql-verbinding moet geldig en open zijn

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);
    }
}


  1. Van het tijdstempel in SQL, records selecteren van vandaag, gisteren, deze week, deze maand en tussen twee datums php mysql

  2. Verbinding met MySQL na een tijdje verbroken en geen verbinding meer gemaakt

  3. Hoe plaats ik backticks in een kolomnaam genaamd key for hibernate

  4. De laatst ingevoegde id krijgen van MySQL in Yii