42 messaggi dal 21 aprile 2004
ciao a tutti,

sto faticosamente cercando di creare delle query di aggiornamento e inserimento in un databese access ma impostando il livello di isolamento a "serializable" ottengo questo errore:

System.Data.OleDb.OleDbException: Impossibile supportare il livello di isolamento specificato o il suo potenziamento.

qualcuno mi poò spiegare il porblema?

inoltre nel secondo inserimento "industries" se uso i parametri ottengo un errore di non corrispondenza dei parametri mentre se assegno i valori direttamente, come scritto qui sotto la query viene eseguita.
questa è la query:

Shared Function AddCompany(ByVal actC As CoreLayer.Company) As Boolean
Dim connStr As String = System.Configuration.ConfigurationSettings.AppSettings("connectionString")
Dim myConnection As New OleDbConnection(connStr)
myConnection.Open()

Dim myCommand As OleDbCommand = myConnection.CreateCommand()
Dim myTrans As OleDbTransaction

myTrans = myConnection.BeginTransaction(IsolationLevel.Serializable)
myCommand.Connection = myConnection
myCommand.Transaction = myTrans

Try
' company
myCommand.CommandText = "INSERT INTO P5_companies (company_name, Adress, Town, Country, Notes ) VALUES (?,?,?,?,?)"
'cmd.Parameters.Add("actUser", OleDbType.VarWChar, 15)
'cmd.Parameters(0).Value = TheUser
myCommand.Parameters.Add("company_name", actC.Name)
myCommand.Parameters.Add("Adress", actC.Adress)
myCommand.Parameters.Add("Town", actC.Town)
myCommand.Parameters.Add("Country", actC.Country)
myCommand.Parameters.Add("Notes", actC.Notes)
myCommand.ExecuteNonQuery()

' ID...
myCommand.CommandText = "SELECT @@IDENTITY"
Dim actID As Int32 = CType(myCommand.ExecuteScalar, Int32)

If Not actC.Activities Is Nothing Then
If actC.Activities.Count > 0 Then
' activitites
Dim actA As CoreLayer.Industry
For Each actA In actC.Activities
myCommand.CommandText = "INSERT INTO P5_activities (companyID, industries) VALUES (" & actID & "," & actA.ID & ")"
'myCommand.Parameters.Add("companyID", OleDbType.Integer).Value = actID
'myCommand.Parameters.Add("industries", OleDbType.Integer).Value = actA.ID

myCommand.ExecuteNonQuery()
Next
End If
End If

myTrans.Commit()
Return True
Catch e As Exception
myTrans.Rollback()
Return False

Finally
myConnection.Close()
End Try
End Function


sperio mi possiate illuminare.
grazie e ciao!
Paolo
Modificato da dejgraphix il 16 maggio 2005 08.24 -
Sinceramente non mi ricordo quali isolation level supporta Access ma Serializable mi sembra un po' esagerato. Quello di default ReadCommitted non va bene?

Ciao

Il mio blog
Homepage
42 messaggi dal 21 aprile 2004
beh,
in realtà non so se ReadCommitted è un livello di isolamento adeguato o no, il fatto è che questa è la mia prima applicazione web e la mia prima applicazione database, volevo "cautelarmi"...

per caso avete qualche suggerimento per l'errore relativo al secondo inserimento?

grazie per avermi risposto
ciao!
Paolo

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.