Mysql
 sql >> база данни >  >> RDS >> Mysql

C# Mysql връзката трябва да е валидна и отворена

Проблемът е, че не съхранявате връзката, която е върната от вашия фабричен имот. Но не използвайте свойство като метод. Вместо това го използвайте по следния начин:

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

Така че използвайте същата връзка в използването, която е върната от свойството (или по-добре създадено при използването) и я предайте на метода, който го използва. Между другото, използването на свойство като фабричен метод не е най-добрата практика.

Но според мен е много по-добре да създадете връзката там, където я използвате, най-доброто място е в using изявление. И хвърлете con собственост на кофата за боклук, това е безсмислено и източник на неприятни грешки.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. @ символ в съхранената процедура?

  2. java.lang.ClassNotFoundException:com.mysql.jdbc.Driver по време на изпълнение (eclipse / maven /tomcat)

  3. как да качите повече от едно изображение на сървър (база данни mysql) с помощта на php и android

  4. Проблеми с показването на изображения на петна

  5. Параметризирана заявка с няколко незадължителни думи за търсене