Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Liczba puli połączeń MySQL

W twoim kodzie jest kilka rzeczy.

  • Najpierw włącz Option Strict . Zadeklarowano, że funkcja zwraca ciąg, ale próbujesz zwrócić Object z Return result
  • Wszystko który implementuje Dispose metoda powinna być użyta wewnątrz Using blok. Pozwala to zadeklarować i zainicjować obiekt, użyć go i pozbyć się go na końcu.
  • Parameters.Add jest lepsze niż AddWithValue . Później zmusza dostawcę bazy danych do odgadnięcia typu danych na podstawie danych.
  • W zależności od obciążenia i tego, czy ta metoda jest często używana, możesz załadować dane do DataTable i wyszukuj to, zamiast odpytywać DB w kółko.

Podstawowym problemem jest (prawdopodobnie), że nie pozbywasz się DBCommand obiekt. Spójrz na konstruktor, którego używasz:

Dim cmdx As New MySqlCommand(cmdTextx, connx)

DBCommand obiekt otrzymuje odwołanie do połączenia. Nawet jeśli jawnie pozbędziesz się połączenia, cmdx nadal ma do niego odniesienie i to nie został usunięty. Using bloki ułatwiają upewnienie się, że rzeczy zostały usunięte:

Dim sql = "Select `Cert` From `Courses` WHERE `ID`[email protected]"

Using dbCon As New MySqlConnection(MySQLConnStr)
    Using cmd As New MySqlCommand(sql, dbCon)
        cmd.Parameters.Add("@Id", MySqlDbType.Int32).Value = CourseTypeID
        dbCon.Open()
        Dim result = cmd.ExecuteScalar

        If result Is Nothing OrElse result Is DBNull.Value Then
            Return String.Empty
        Else
            Return result.ToString()
        End If
    End Using           ' close, dispose of conn
End Using               ' dispose of DBCommand

Aby zmniejszyć wcięcia, możesz „ułożyć” elementy w jeden Using blok:

Using connx As New MySqlConnection(MySQLConnStr),
    cmd As New MySqlCommand(sql, connx)
    ...
End Using

Zwróć uwagę na przecinek na końcu pierwszego wiersza.

Byłbym zaskoczony, gdyby to nie była przyczyna twojego wycieku (oczywiście cały kod musiałby zostać zmieniony).




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmiana roku w mysql date

  2. php zawiera błąd nie znajduje ścieżki

  3. Zmień lub ustaw wartość długiego czasu zapytań MySQL dla zapytań log-slow-query

  4. Jak utworzyć hierarchiczne rekurencyjne zapytanie MySQL?

  5. Warunek SQL WHERE nie jest równy?