Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    263

    MySQL: differenze per esecuzione query

    Ciao a tutti.
    Sto migrando da Access a MySql.
    Vorrei sapere che differenza c'è tra le seguenti istruzione per eseguire una query:
    - set RecSet = Conn.execute(SQL)
    e
    - RecSet.Open SQL, Conn, 3, 3

    e se non vi fosse differenza quale è meglio utilizzare.

    Ho notato che la seconda istruzione ogni tanto (si, ogni tanto...sono le cose che mi fanno imbufalire in campo informatico) non funziona e da errore.

    Grazie per l'aiuto.

  2. #2
    la prima istruzione apre un recordset in read only e forward only per scorrere i record. La seconda istruzione ti da un recordset editabile e leggibile in qualunque direzione (come move e next), quindi piu pesante come oggetto del primo e quindi meno performante. Il fatto cmq che ti dia errore dev'essere dovuto a qualcos'altro perchè non sarebbe normale
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    263
    Grazie Santino per la risposta, ma come si spiega che con la prima riesco ad andare anche in update ?

    es.
    SQL1 = "UPDATE Company SET Attivo = 1, data_attivazione = CURDATE(), data_rinnovo = CURDATE() where id = " & id & " and codice = '" & code & "' and attivo=0"
    Set RecSet = Conn.execute(SQL1)

  4. #4
    Originariamente inviato da marviv
    Grazie Santino per la risposta, ma come si spiega che con la prima riesco ad andare anche in update ?

    es.
    SQL1 = "UPDATE Company SET Attivo = 1, data_attivazione = CURDATE(), data_rinnovo = CURDATE() where id = " & id & " and codice = '" & code & "' and attivo=0"
    Set RecSet = Conn.execute(SQL1)

    per il semplice fatto che il conn.execute con un update non ritorna un recordset.. cioè se vai a vedere cos'è RecSet dopo il conn.execute o è nothing oppure è un recordset vuoto.

    solo istruzioni select ritornano recordset, insert e update no e quindi si usa solo conn.execute() e non set rs=conn.execute
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    teoricamente potrebbe funzionare anche una rs.open per fare una update, ma perché sprecare risorse?

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2004
    Messaggi
    263
    Ultimo dubbio:
    mi sembra di aver capito che con insert, update e quindi anche con delete conviene utilizzare conn.execute(sql)

    Tutto questo a prescindere da eventuali accessi contemporanei al db ?
    mi spiego. Nell'istruzione RecSet.Open SQL, Conn, 3, 3 gli ultimi due parametri impattano sulla modalità di accesso al db (spero di non sbagliare nell'affermare questo).
    Con conn.execute(sql) non specifico nulla, ma con insert, update e delete vado a toccare il db.....

    Prometto che è l'ultimo approfondimento....

  7. #7
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Sono istruzioni "secche" che eseguono una operazione senza restituire nulla quindi i cursori non ti occorrono.

    Roby

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 © 2026 vBulletin Solutions, Inc. All rights reserved.