sql >> Database >  >> RDS >> Mysql

Aantal MySQL-verbindingspools

Er staan ​​verschillende dingen in je code.

  • Schakel eerst Option Strict in . De functie is gedeclareerd om een ​​string terug te geven, maar u probeert Object . te retourneren met Return result
  • Alles die een Dispose . implementeert methode zou moeten worden gebruikt in een Using blok. Hiermee kunt u een object declareren en initialiseren, het gebruiken en aan het einde weggooien.
  • Parameters.Add is beter dan AddWithValue . Hoe later dwingt de DB-provider om het datatype te raden op basis van de data.
  • Afhankelijk van de belasting en of die methode veel wordt gebruikt, kunt u de gegevens naar een DataTable laden en zoek daarop in plaats van de DB steeds opnieuw te doorzoeken.

Het kernprobleem is (waarschijnlijk) dat u niet beschikt over de DBCommand voorwerp. Kijk naar de constructor die je gebruikt:

Dim cmdx As New MySqlCommand(cmdTextx, connx)

De DBCommand object wordt een verwijzing naar de verbinding doorgegeven. Ook al heb je expliciet afstand gedaan van de verbinding, cmdx heeft er nog steeds een verwijzing naar, en het werd niet afgedaan. Using blokken maken het eenvoudig om er zeker van te zijn dat dingen worden weggegooid:

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

Om inspringen te verminderen, kunt u items in één "stapelen" Using blok:

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

Let op de komma aan het einde van de eerste regel.

Het zou me verbazen als dit niet de oorzaak van je lek was (natuurlijk zou alle code moeten worden gewijzigd).




  1. Verwijderen met Join in Oracle sql Query

  2. hoe geef je een null-waarde door aan een veld met een externe sleutel?

  3. Leeftijd berekenen vanaf verjaardag met oracle plsql-trigger en de leeftijd in de tabel invoegen

  4. Hoe de kolomnaam van het resultaat van een minste functie te krijgen?