Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Problemi con controllo di ExecuteNonQuery con .net

    Ciao a tutti, avrei un problema che spero a qualcuno venga un'idea
    Ho all'interno di un mio programma una routine come segue
    Function scrivi_dati(ByVal sql As String) As Integer
    cn1.Open()
    Dim cmd1 As New OleDbCommand
    cmd1.Connection = cn1
    cmd1.CommandText = sql
    Dim r As Integer
    r = cmd1.ExecuteNonQuery
    cn1.Close()
    End Function
    A questo tramite la variabile string passo delle istruzioni sql da eseguire ad esempio

    UPDATE tabella SET campo = 1



    perciò avrò:

    sql="UPDATE tabella SET campo = 1"
    dim c as integer=scrivi_dati(sql)


    poi il programma continua con ad esempio

    sql = "SELECT from tabella where campo=1"
    Dim r As Integer, i As Integer = 0
    Dim cmd4 As New OleDbCommand(sql, cn)

    ecc.ecc

    il problema è il seguente:
    facciamo un esempio limite supponiamo che la tabella sia composta da 30000 record si verifica questo:

    il programma va sulla select mentre sta ancora finendo la funzione di update e perciò mi restituisce una situazione non aggiornata

    Spero di essere stato chiaro: qualcuno ha qualche idea?

    grazie
    Daniele

  2. #2

    Re: Problemi con controllo di ExecuteNonQuery con .net

    Originariamente inviato da danielev
    Ciao a tutti, avrei un problema che spero a qualcuno venga un'idea...
    il problema è il seguente:
    facciamo un esempio limite supponiamo che la tabella sia composta da 30000 record si verifica questo:
    il programma va sulla select mentre sta ancora finendo la funzione di update e perciò mi restituisce una situazione non aggiornata
    Spero di essere stato chiaro: qualcuno ha qualche idea?
    L'esecuzione del codice e' sequenziale quindi se nel tuo codice hai un command che effettua un update di n righe (1 o 1000000 non cambia) finche' non ha finito non passi al comando successivo. Piuttosto la funzione cosi come l'hai scritta non ti torna fuori il numero di record affetti perche' non vedo nessun "return r". Quindi potresti migliorarla gestendo meglio anche la chiusura della connessione es.
    codice:
    Function scrivi_dati(ByVal sql As String) As Integer 
    try
    Dim cmd1 As New OleDbCommand 
    cmd1.Connection = cn1 
    cmd1.CommandText = sql 
    cn1.Open() 
    return cmd1.ExecuteNonQuery 
    finally
    cn1.Close() 
    end try
    End Function
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    gia mancava proprio questo

    return cmd1.ExecuteNonQuery

  4. #4
    Grazie a tutti effettivamente ...

    Integro subito la mia routine con il vostro consiglio

    Buone feste a tutti
    Daniele

  5. #5
    Putroppo ho scoperto che non è proprio vero che il programma è sequenziale.
    MI spiego meglio facendo un esempio assurdo: un caso limite!

    Se lancio una query che magari ci impiega supponiamo 10 minuti non è vero che il programma si ferma e aspetta... l'esecuzione di vb.net continua anche se la query non ha ancora finito.

    Questo mi crea problemi se devo eseguire delle istruzioni che dipendono dalla query precedente. mi trovo ad esempio dovre analizzare un risultato non ancora finito.

    Manca praticamente una istruzione che mi dica attenzione la query è terminata... prosegui pure
    Credetemi, ho provato ed è vero

    Qualcuno ha qualche idea?


    Grazie
    Daniele

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.