Modalità di accesso ad un database

giovedì 06 luglio 2006 - 10.36

Luigi3 Profilo | Junior Member

Volevo chiedere se l'impostazione di dafault, quando mi collego ad un database (Access nel mio caso), della modalità di accesso è di sola lettura.
Io utilizzo la seguente stringa di connessione:
"Provider=SQLOLEDB.1;Persist Security Info=False;Password=abc;User ID=abc;Initial Catalog=Prova;Data Source=xxx.xxx.xxx.xxx"

Questo perche' capita che ho un programma che accede a dei database access, ma ogni tanto questi database vanno in errore comunicando che il database e' in utilizzo in modalita' esclusiva da questo programma.

613x128 25Kb

Teech Profilo | Expert

Controlla che il DB Access non sia in modalita di accesso Esclusivo.
Dal DB devi andare in Strumenti --> Opzioni. Nella scheda avanzate controlla la modalità di apertura predefinita ed impostala eventualmente su Accesso Condiviso.

Ho notato solo ora che utilizzi un provider per SQL con DB Access. Cambia la stringa di connessione.
Il modo più semplice è creare un file aaa.UDL sul desktop, fai doppio click per aprirlo e imposti la connessione dalla maschera proposta.
Salvi la connessione e apri il file aaa.udl con Notepad. Li trovi la tua stringa di connessione correttamente creata.
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

Luigi3 Profilo | Junior Member

Scusa ho sbagliato la stringa. Quella che utilizzo per la connessione al database access e' questa:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\xxxx\db.mdb;User Id=admin;Password=;

Teech Profilo | Expert

Oltre al controllo che ti ho consigliato prima riguardo all'accesso al DB prova a togliere l'utente dalla stringa di connessione usando semplicemente

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\\xxxx\db.mdb
--------------
Maurizio Brini
--------------
Nessuna impresa è mai stata compiuta da un uomo ragionevole

fasol Profilo | Junior Member

ciao prova a utilizzare questo codice così dovresti toglierti dall'impiccio....
----->per aprirlo in modo READ/WRITE

Public Const PROVIDER As String = _
"provider=microsoft.Jet.oledb.4.0; data source="

##################################
Public Function openDbModify(connessione As ADODB.Connection, recordset As ADODB.recordset, sourceDB As String, tabella_query As String) As Double

On Error GoTo errore

Set connessione = New ADODB.Connection
Set recordset = New ADODB.recordset


connessione.Open PROVIDER & sourceDB
recordset.Open tabella_query, connessione, adOpenDynamic, adLockOptimistic

openDbModify = err.Number
Exit Function

errore:
openDbModify = err.Number

End Function

###################################
----->per aprirlo in modo READ

Public Function openDbOnlyRead(connessione As ADODB.Connection, recordset As ADODB.recordset, sourceDB As String, tabella_query As String) As Double

On Error Resume Next

Set connessione = New ADODB.Connection
Set recordset = New ADODB.recordset
connessione.Open PROVIDER & sourceDB
recordset.Open tabella_query, connessione, adOpenDynamic, adLockReadOnly

openDbOnlyRead = err.Number

End Function

fammi sapere ciao ciao FASOL




Luigi3 Profilo | Junior Member

Ho segnalato come buona la risposta di Teech in quanto illustra anche una ottima soluzione per la realizzazione di stringhe di connessione ai diversi tipi di database.
E' ottima anche la soluzione di Fasol che ringrazio per l'interesse.
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