Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431

    Chiusura connessione ado non funziona

    Ciao,
    ho queste due funzioni per gestire la connessione ADO per diversi db (devo fare una migrazione da access a mariadb-mysql)
    codice:
    Function CreaConnDB(driver, database, porta, serverMariaDB, user, password, opt, charset)    set connessione = server.CreateObject("ADODB.Connection")
    
    
        'verifico se il driver e' selezionato
        Select Case driver
            Case 1, 2, 3
            Case Else
                CreaConnDB = Nothing
                esitoOp "Attenzione inserire driver corretto per la connessione"
        End Select
    
    
        select case driver
            case drvDBAccess
                drv = "{Microsoft Access Driver (*.mdb)}"
                db = server.mappath(database)
    
    
                'response.Write db
    
    
                conn_string = "Driver="& drv &"; DBQ=" & db
            case drvDBMariaDBx64
                drv = "{MariaDB ODBC 3.1 Driver}"
                db = database
                porta = port
                srv = serverMariaDB
                utente = user
                pwd = password
                opzioni = opt
                char = charset
    
    
                conn_string = "DRIVER="& drv &";port="& porta &";SERVER="& srv &";UID="& utente &";PWD="& pwd &";database="& db &";Option="& opzioni &";charset="& char
    		case drvDBMysql
    			drv = "{MySQL ODBC 8.0 UNICODE Driver}"
                db = database
                porta = port
                srv = serverMariaDB
                utente = user
                pwd = password
                opzioni = opt
                char = charset
        end select
    
    
        If conn_string <> "" Then
            On Error Resume Next
            
            connessione.connectionString = conn_string
            set CreaConnDB = connessione
    
    
            If Err.Number <> 0 Then
                'gestire errori
            End If
            On Error Goto 0
        Else
            'gestire errori
        End If
    End Function
    
    
    Function ChiudiConnDB(connessioneDB)
        If Not connessioneDB Is Nothing Then
            connessioneDB.close
        End If
    	
    	set connessioneDB = Nothing
    End Function
    la funzione apriConnDB funziona, ma la chiudiConnDB mi da errore sulla riga rossa, anche se lascio solo connessioneDB.close stesso errore

    Errore di run-time di Microsoft VBScript error '800a01a8'
    Necessario oggetto

    mi sapete aiutare? vorrei chiudere la connessione per non lasciare oggetti aperti
    Da un grande potere derivano grandi responsabilità

  2. #2
    non c'è l'esempio di dove richiami la ChiudiConnDB e non è evidenziata la "riga rossa"

  3. #3
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431
    la formattazione del forum mi ha mangiato l'evidenziazione in rosso, l'errore e' qui

    If Not connessioneDB Is Nothing Then

    o se tolgo l'if qui

    connessioneDB.close

    per creare la connessione faccio conn = CreaConnDB(drvDBMysql, "log" ,3306,"localhost","root","","", dbCharsetUtf8)

    per chiuderla call ChiudiConnDB(conn)

    grazie
    Da un grande potere derivano grandi responsabilità

  4. #4
    1. ChiudiConnDB non dovrebbe essere una Function ma una Sub
    2. Se invece di call ChiudiConnDB(conn) fai set conn = Nothing, che succede?

  5. #5
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431
    1 - vero, ho provato con sub ma l'errore rimane uguale
    2 - non cambia mi da errore Variabile oggetto non impostata
    Da un grande potere derivano grandi responsabilità

  6. #6

  7. #7
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431
    Ho letto il post, ho modificato cosi

    If IsObject(connessioneDB) Then
    connessioneDB.close
    set connessioneDB = Nothing
    Else
    Response.Write "no oggetto"
    End If

    e funziona ma passa sempre nell'else, sembra che l'oggetto non sia proprio passato alla funzione/sub e quindi isObject o isEmpty risultano sempre falsi

    edit
    quindi non si riesce a chiudere la connessione aperta prima
    Da un grande potere derivano grandi responsabilità

  8. #8
    questo vuol dire che conn è già chiusa o mai aperta

  9. #9
    Utente di HTML.it L'avatar di abellos
    Registrato dal
    Feb 2002
    Messaggi
    431
    e' aperta perche' riesco a leggere i dati tramite un recordset che utilizza quella connessione, ho provato a fare Response.Write VarType(conn) e come risultato mi da 8 che indica una stringa
    Da un grande potere derivano grandi responsabilità

  10. #10
    non ti basta fare conn.close?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.