2010-09-24 13 views
6

Istnieje baza danych SQL Compact v3.1, którą chcę szybko przeczytać. Robię to w pythonie, więc nie mam dostępu do kodu zarządzanego.Jak otworzyć bazę danych SQL Compact tylko do odczytu

Zauważyłem, że jeśli użyję adodbapi, plik bazy danych zostanie zmodyfikowany właśnie przez jego otwarcie. I niestety, gdy dodaję "Tryb pliku = Tylko do odczytu" do ciągu połączenia, otrzymuję dziwny błąd.

Oto kod używać do łączenia:

import adodbapi 
adodbapi.connect('Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0; Data Source="awesome.sdf"; File mode = Read Only;SSCE:Temp File Directory=c:\temp\\;') 

I wtedy pojawia się komunikat o błędzie

OperationalError: (com_error(-2147352567, 'Exception occurred.', (0, u'Microsoft OLE DB Service Components', 
      u'Multiple-step OLE DB operation generated errors. Check each OLE DB status value, if available. No work was done.', 
      None, 0, -2147217887), None), 
    u'Error opening connection: Provider=Microsoft.SQLSERVER.MOBILE.OLEDB.3.0; Data Source="Awesome.sdf";File mode = Read Only;SSCE:Temp File Directory="c:\\\temp\\";') 

dodałem SSCE bo kiedy napisałem program testowy w C# to potrzebował . Poniższy kod działa doskonale i nie modyfikuje pliku po wykonaniu prostego zapytania SELECT.

conn = new SqlCeConnection("Data Source = awesome.spf; File mode = Read Only;SSCE:Temp File Directory=\"c:\\users\\evelio\\desktop\\\";"); 
conn.Open(); 

Dzięki za pomoc,
Evelio

Odpowiedz

Powiązane problemy