sql >> Databasteknik >  >> RDS >> Mysql

Antal MySQL-anslutningspooler

Det finns flera saker i din kod.

  • Aktivera först Option Strict . Funktionen deklareras att returnera en sträng, men du försöker returnera Object med Return result
  • Allt som implementerar en Dispose metod borde användas i en Using blockera. Detta låter dig deklarera och initiera ett objekt, använda det och göra dig av med det i slutet.
  • Parameters.Add är bättre än AddWithValue . Det senare tvingar DB-leverantören att gissa datatypen baserat på data.
  • Beroende på belastningen och om metoden används mycket, kan du ladda data till en DataTable och gör sökningar på det istället för att fråga DB om och om igen.

Kärnproblemet är (förmodligen) att du inte gör dig av med DBCommand objekt. Titta på konstruktorn du använder:

Dim cmdx As New MySqlCommand(cmdTextx, connx)

DBCommand objekt skickas en referens till anslutningen. Även om du uttryckligen gör dig av med anslutningen, cmdx har fortfarande en referens till den, och den kasserades inte. Using block gör det enkelt att vara säker på att saker kasseras:

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

För att minska indrag kan du "stapla" objekt i en Using blockera:

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

Notera kommatecken i slutet av den första raden.

Jag skulle bli förvånad om detta inte var orsaken till din läcka (naturligtvis skulle all kod behöva ändras).




  1. Kan inte infoga Unicode med cx-Oracle

  2. Hur exporterar jag tabell till CSV med Oracle SQL Developer?

  3. Mysql-problem med WHERE i klausul

  4. Hur man skapar en noll-begränsning i Oracle