Perdita della connessione

mercoledì 17 novembre 2004 - 09.56

sarto76 Profilo | Junior Member

ciao a tutti io utilizzo il DB mysql ed ho creato delle transazioni con l'iggetto Transation.
La mia domanda è la seguente: se mentre sto eseguendo un insert mi parte la connessione al server (o il server si spegne) come faccio a fare il rollback dei dati visto che sono già sul server ma questo non è raggiungibile? Che altra soluzione potrei adottare?
Grazie mille a tutti

trinity Profilo | Guru

prima di tutto te prima di fai l'insert o l'update o altro devi attivare la connessione al database, poi devi eseguire questo esempio di codice che ti posto in quanto se si genera un'errore non ti crea problemi a fare il rallback:

Dim cmd as New MysqlCommand()
Dim mysqltrans As MySqlTransaction 'dichiari la transazione

mysqltrans = database.BeginTransaction() 'partenza della transazione

try
cmd.Transaction = mysqltrans

Dim sql as string

sql="Insert Into nome_tabella (campo1,campo2...) Values('1','2'...)
cmd = New MySqlCommand(sql, database)
cmd.ExecuteNonQuery()
mysqltrans.Commit()
catch
Try
mysqltrans.Rollback()
Catch ex As Exception
If Not mysqltrans.Connection Is Nothing Then
MsgBox(ex.ToString, MsgBoxStyle.Exclamation)
End If
End Try
End Try

Ciao
Fabio

sarto76 Profilo | Junior Member

a me capita la seguente cosa. Io devo fare più di un insert nella stessa transazione Quando eseguo il comando ExecuteNonQuery mi scrive i dati nel database, quindi se perdo la connessione entra nel catch, ma non riesce ad eseguirmi il rollback perchè la connessione non è attiva.
Non riesco a capire bene...credo di non essere in chiaro al 100%
Grazie mille ciao Massimo

trinity Profilo | Guru

Se fai caso al codice che ti ho postato vedrai che se nell'insert si genera un errore il programma passa alla funzionje catch che all'inizio vi è l'operazione di rallback che effettuta.

Ciao
Fabio

sarto76 Profilo | Junior Member

grazie trinity questo l'ho visto, forse non mi sono spiegato bene. Nel tuo codice riesce a fare il rollback se la connessione non c'è più?
Nel mio script quando faccio executeNonQuery mi mette i dati in DB sul server. Ma se non ho più il server come faccio a fare un rollback sul database sul server?
Grazie e scusa ma non sono molto pratico di connessioni...

trinity Profilo | Guru

allora ti consiglio di fare un controllo degli errori con il try..catch...per vedere se la connessione è attiva oppure no un esempio:

db.State.Open = ConnectionState.Open 'significa che la connessione è aperta e attiva

Ciao
Fabio
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5