sql >> Databasteknik >  >> RDS >> Mysql

C# Mysql Connection måste vara giltig och öppen

Problemet är att du inte lagrar anslutningen som returnerades från din fabriksfastighet. Men använd inte en egenskap som en metod. Använd det istället på detta sätt:

using (var con = Services.conn)
{
    Services.conn.Open();
    Services.DB_Select("..a short select statement..", con ));
    //Services.conn.Close(); unnecessary with using
}

Så använd samma anslutning i användningen som returnerades från egenskapen (eller bättre skapades i användningen) och skicka den till metoden som använder den. Förresten, att använda en egenskap som fabriksmetod är inte bästa praxis.

Men enligt min åsikt är det mycket bättre att skapa anslutningen där du använder den, bästa platsen är i using påstående. Och kasta con egendom till soptunnan, det är meningslöst och en källa till otäcka fel.

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. Hierarkisk fråga i MySQL. (anslut med motsvarande för MySQL)

  2. Ansible älskar PostgreSQL

  3. Hur fungerar SQL LIKE egentligen

  4. meta-nyckel och meta_value-fråga i wordpress