2012-10-16 9 views
6

Mam aplikację .NET 4 (w trybie mieszanym) z System.Data.Sqlite (1.0.82) w celu uzyskania dostępu do bazy danych do zaszyfrowanej bazy danych.Powolne połączenie System.Data.SQLite dla użytkowników nieadministracyjnych

Po zainstalowaniu aplikacji do "c: \ program files \ myfolder" połączenie z bazą danych sqlite jest powolne. Pliki dziennika pokazują, że jest to polecenie połączenia sqlite, które jest opóźnione o kilka sekund.

Problem nie występuje, kiedy należy wykonać następujące czynności:

  • Uruchom aplikację z uprawnieniami administratora
  • zainstalować żadnego innego miejsca niż c: \ program files \
  • Zainstaluj aplikację do c: \ program files \, ale przenieś bazę danych do innego folderu.

nie mam pojęcia co może być przyczyną tego ...

Odpowiedz

5

Jeśli plik DB jest w katalogu aplikacji to jest to bardzo prawdopodobne, że UAC jest przeniesienie go do”... appdata \ Local \ VirtualStore \ Program Files ". Najlepszą praktyką jest utworzenie własnego folderu appdata \ MyApp i skopiowanie nieskazitelnego DB z folderu c: \ program files \ MyApp.

+0

działa, dziękuję – matihuf

1

Pomaga otworzyć bazę danych w trybie tylko do odczytu. (W każdym razie powinieneś przechowywać tylko pliki tylko do odczytu w folderze plików programów.)

Wystarczy dołączyć ";Read Only=True" do ciągu połączenia.

private const string CONN_TEMPL = "Data Source={0};Version=3;Read Only=True"; 
var conn = new SQLiteConnection(
    String.Format(CultureInfo.InvariantCulture, CONN_TEMPL, databasePath) 
); 
Powiązane problemy