Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
[VB2005] Forzare la scrittura di un ID auto_increment (MySQL)
martedì 31 luglio 2007 - 12.36
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
GuardianOfTheFlame
Profilo
| Junior Member
112
messaggi | Data Invio:
mar 31 lug 2007 - 12:36
Ho trovato un altro modo (+ elegante) per aver gli Id corretti, ovvero usare un handler al metodo OnRowUpdate che legge l'ID appena inserito aggiornando il valore sul dataset:
Private Sub OnRowUpdated(ByVal sender As Object, ByVal args As MySqlRowUpdatedEventArgs)
Dim newID As Integer = 0
Try
Dim idCMD As MySqlCommand = New MySqlCommand("SELECT LAST_INSERT_ID()", Me.Connection)
If args.StatementType = StatementType.Insert Then
' Retrieve the identity value and store it in the CategoryID column.
newID = CInt(idCMD.ExecuteScalar())
args.Row("ID") = newID
End If
Catch ex As Exception
Throw ex
End Try
End Sub
ho però un problema in questa situazione:
ho 10 record nel db e creo 2 nuovi record di ID 11 e 12. Salvo sul db, ma nel frattempo ne è stato aggiunto 1, quindi il db assegna 12 e 13.
quando inserisce il primo gli riassegna l'ID 12 che però è già usato dal secondo record (che non è stato ancora inserito) e mi viene lanciato un errore di chiave duplicata! Ovviamente dovrebbe inserire i record partendo da quello di ID + alto per ovviare a questo problema, ma come faccio a dire al datadapter che deve iniziare l'inserimento dall'ID maggiore!?!
---MESSAGGIO ORIGINALE---
Ciao a tutti,
ho una tabella MySQL con la classica colonna ID int(11) auto_increment primary key che leggo in una datatable
Per essere certo di avere l'ID corretto quando aggiungo una riga eseguo i seguenti istruzioni SQL:
insert into tabella (ID) values (0) <-- MySQL capisce che deve crearsi l'id da solo visto che è auto_increment
select last_insert_id()
delete from tabella where ID = ...
in questo modo "prenoto" un id che sono sicuro sarà univoco.
Il mio problema è ora capire come fare a dire al DataAdapter di forzare la scrittura dell'ID sul DB, perché un semplice Update non scrive l'ID che ho calcolato, ma ne fa ricalcolare uno nuovo al DB.
Spero sappiate darmi una mano, che dopo averlo capito sono a a buon punto!
Grazie!
Salo
Torna su
Stanze Forum
Elenco Threads
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 !