sql >> Database teknologi >  >> RDS >> Mysql

C# Mysql Connection skal være gyldig og åben

Problemet er, at du ikke gemmer forbindelsen, der blev returneret fra din fabriksejendom. Men brug ikke en egenskab som en metode. Brug det i stedet på denne måde:

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

Så brug den samme forbindelse i brugen, der blev returneret fra ejendommen (eller bedre oprettet i brugen), og send den til den metode, der bruger den. Det er i øvrigt ikke den bedste praksis at bruge en ejendom som fabriksmetode.

Men efter min mening er det meget bedre at oprette forbindelsen, hvor du bruger den, det bedste sted er i using udmelding. Og smid con ejendom til skraldespanden, det er meningsløst og en kilde til grimme fejl.

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. Baggrundsprocesser

  2. SQL-sætning for at få alle kunder uden ordrer

  3. Sammenkæd en streng og et tal i PostgreSQL

  4. Opret forbindelse til SQL Server med Windows-godkendelse fra en Linux-maskine gennem JDBC