sql >> Databáze >  >> RDS >> Mysql

Připojení C# Mysql musí být platné a otevřené

Problém je v tom, že neukládáte připojení, které bylo vráceno z vašeho továrního majetku. Ale nepoužívejte vlastnost jako metodu. Místo toho jej použijte tímto způsobem:

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

Použijte tedy stejné připojení v use, které bylo vráceno z vlastnosti (nebo lépe vytvořené v use) a předejte jej metodě, která jej používá. Mimochodem, používat vlastnost jako tovární metodu není nejlepší praxe.

Ale podle mého názoru je mnohem lepší vytvořit připojení tam, kde jej používáte, nejlepší místo je v using tvrzení. A hodí con vlastnictví do popelnice, je to zbytečné a je zdrojem nepříjemných chyb.

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. sql pro výběr jednoho záznamu pro každý měsíc se součtem záznamů tohoto měsíce

  2. Jak objednávat podle data v MySQL

  3. Jak exportovat data pole clob ve vývojáři Oracle SQL

  4. Jak správně indexovat propojovací tabulku pro připojení many-to-many v MySQL?