none
VB.NET / MySQL ODBC 3.51 - Error max_user_connections RRS feed

  • Pregunta

  • ¿Cuál es la forma correcta de ejecutar consultas a MySQL?

    Cada tanto recibo el error:

    User blablalbla already has more than 'max_user_connections' active connections

    siendo que al finalizar cada ExecuteReader cierro todo...

    Dim sqlstr As String = "SELECT Moneda..."
    Dim conn As OdbcConnection = New OdbcConnection(DB_ConnString)
    Dim comm As OdbcCommand = New OdbcCommand(sqlstr, conn)
    conn.Open()
    Dim rdr As OdbcDataReader = comm.ExecuteReader
    If rdr.HasRows Then
    	Moneda = rdr("Moneda")
    	....
    End If
    rdr.Close() : rdr.Dispose() : conn.Close()

    Gracias!!!

    jueves, 8 de agosto de 2019 18:53

Respuestas

  • hola

    si es correcta

    quizas no seria necesario tantos using ya que definiendo un solo scope el resto estaria delimitado

    Using connection As New MySqlConnection(DB_ConnString)
    	connection.Open()
    	
    	Dim mysqlQry As String = "SELECT ..."
    	Dim ConnCombo As New MySqlCommand(mysqlQry, connection)
    	
    	Dim rdr As MySqlDataReader = ConnCombo.ExecuteReader()
    	
    	While rdr.Read()
    		a = rdr(0)
    		...
    	End While
    
    End Using

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Sergio_UY jueves, 8 de agosto de 2019 21:57
    jueves, 8 de agosto de 2019 21:39

Todas las respuestas

  • hola

    porque usas odbc para conectarte a mysql? eso no esta bien

    deberias usar el conector de ado.net

    Download Connector/NET

    se puede agregar po nuget

    pero la idea es usar las clase MySqlConnection, MySqlCommand, etc

    Conexión a MySQL usando ADO.NET

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    jueves, 8 de agosto de 2019 18:58
  • Una implementación de este tipo estaría correcta?

    Using connection As New MySqlConnection(DB_ConnString)
    	connection.Open()
    	Dim mysqlQry As String = "SELECT ..."
    	Using ConnCombo As New MySqlCommand(mysqlQry, connection)
    		Using rdr As MySqlDataReader = ConnCombo.ExecuteReader()
    			While rdr.Read()
    				a = rdr(0)
    				...
    			End While
    		End Using
    	End Using
    End Using

    Se cerrarían de esa forma todas las conexiones al terminar la consulta?

    Gracias.

    jueves, 8 de agosto de 2019 20:48
  • hola

    si es correcta

    quizas no seria necesario tantos using ya que definiendo un solo scope el resto estaria delimitado

    Using connection As New MySqlConnection(DB_ConnString)
    	connection.Open()
    	
    	Dim mysqlQry As String = "SELECT ..."
    	Dim ConnCombo As New MySqlCommand(mysqlQry, connection)
    	
    	Dim rdr As MySqlDataReader = ConnCombo.ExecuteReader()
    	
    	While rdr.Read()
    		a = rdr(0)
    		...
    	End While
    
    End Using

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta Sergio_UY jueves, 8 de agosto de 2019 21:57
    jueves, 8 de agosto de 2019 21:39
  • Gracias Leandro, siempre muy atento!

    Quedó funcionando de esa forma (con menos líneas de código).

    Saludos!!

    jueves, 8 de agosto de 2019 21:57