System.data.dbconcurrecyexceptio: Violazione di concorrenza

mercoledì 06 aprile 2005 - 18.48

assauei Profilo | Newbie

Salve a tutti,
mi sono trovato di fronte ad un problema: sto cercando di utilizzare un datagrid per modificare direttamente la tabella del database visualizzata nel datagrid stesso,
sto utilizzando un odbc driver su mysql 4.0, le query SELECT e INSERT funzionano ma l'UPDATE mi lancia l'eccezione

system.data.dbconcurrecyexceptio: Violazione di concorrenza

... anche se sono l'unico utente ad utilizzare il database

Inoltre, la configurazione automatica adattatore dati di visual studio non riesce a generare le query UPDATE e DELETE, mentre genera INSERT e SELECT

Questo è il codice:
'ISTANZIO I DATAADAPTER

Dim connection As New MySql.Data.MySqlClient.MySqlConnection
Dim updatecommand As New MySql.Data.MySqlClient.MySqlCommand
Dim SQL As String

da_utente = New MySql.Data.MySqlClient.MySqlDataAdapter
ds_utente = New DataSet
da_utente.TableMappings.Add("Table", "utente")


connection.ConnectionString = stringa_connessione
updatecommand.Connection = connection 'CREO L'UPDATECOMMAND PER IL DATAADAPTER
SQL = "UPDATE utente SET " 'CREO ANCHE L'ISTRUZIONE SQL PER L'UPDATE COSI' GLI INSERISCO TUTTI I CAMPI DA AGGIORNARE
updatecommand.Parameters.Add(New MySql.Data.MySqlClient.MySqlParameter("@codice", MySql.Data.MySqlClient.MySqlDbType.VarChar, 50, "@codice"))
SQL &= "codice = @codice, "
updatecommand.Parameters.Add(New MySql.Data.MySqlClient.MySqlParameter("@nome", MySql.Data.MySqlClient.MySqlDbType.VarChar, 50, "@nome"))
SQL &= "nome = @nome, "
...
updatecommand.Parameters.Add(New MySql.Data.MySqlClient.MySqlParameter("@id", MySql.Data.MySqlClient.MySqlDbType.Int32, 4, "id"))
updatecommand.Parameters.Add(New MySql.Data.MySqlClient.MySqlParameter("@Original_id", MySql.Data.MySqlClient.MySqlDbType.Int32, 4, System.Data.ParameterDirection.Input, False, CType(0, Byte), CType(0, Byte), "id", System.Data.DataRowVersion.Original, Nothing))
SQL = SQL.Trim(" ").Trim(",")
SQL &= " WHERE (id = @Original_id)"
updatecommand.CommandText = SQL
da_utente.UpdateCommand = updatecommand

HELP ME

Cteniza Profilo | Guru

Adesso io non conosco mysql però a quanto vedo stai usando la stessa sintassi prevista per sql server.
Sei sicuro/a che il segnaposto va con la @ ? io farei una verifica.
Poi farei fare al commandbuilder il comando.
Se lo vuoi digitare verifica almeno quello che fa lui e poi modificalo (con getupdatecommand puoi ricopiare su un oggetto command tutti gli elementi)

assauei Profilo | Newbie

Il mio ERA proprio un problema di provider e di sintassi!
ora l'ho risolto anche se in maniera un po' sbrigativa:
esiste il componente della Core Lab che fa proprio al caso mio e di tutti quelli che vogliono interfacciarsi con un database MySql avendo a disposizione un comodo strumento.
Maggiori informazioni le trovate qui: http://www.crlab.com/mysqlnet/
Se poi riuscite a trovare una soluzione piu economica fatemela presente!

Cteniza Profilo | Guru

Veramente esiste anche il driver nativo .net di mysql che è gratuito.
Si tratta solo di usarlo correttamente.
Della serie: perchè spendere dei soldi per niente?
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