2013-07-02 3 views
3

Я использую esxiting .sdf-файл в приложении для Windows-приложений. Когда я попытался открыть базу данных, я получаю ошибку, например: Доступ к файлу базы данных запрещен [1981, Filename = '\ Applications \ install \ OFC425F3-22CC-4A60-A815-40FE ...... \ install \ Countries. SDF, SeCreateFile]Доступ к файлу базы данных запрещен [1981]

Мой код:

private const string strConnectionString = "Data Source = 'appdata:/Countries.sdf'"; 

private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     try 
     { 
      IList<Country> countryList = this.GetCountryList(); 

     } 
     catch (Exception c) 
     { 
      MessageBox.Show(c.Message); 
     } 
    } 




public IList<Country> GetCountryList() 
    { 
     // Fetching data from local database 
     IList<Country> countryList = null; 
     try 
     { 
      using (CountryDataContext countryDB = new CountryDataContext(strConnectionString)) 
      { 
       IQueryable<Country> countryQuery = from _contry in countryDB._countries select _contry; 
       // MessageBox.Show(countryQuery.Count().ToString()); 
       countryList = countryQuery.ToList(); 
      } 
     } 
     catch (Exception c) 
     { 
      MessageBox.Show(c.Message); 
     } 
     return countryList; 
    } 

Когда я попытался с этим

private const string strConnectionString = "Data Source = 'appdata:/Countries.sdf'; File Mode =read only;"; 

я получаю сообщение об ошибке, как: дБ открыт с доступом только для чтения. Не удается выполнить операции после инициализации, такие как восстановление индексов и обновление общедоступного отслеживания. Пожалуйста, повторно откройте соединение с чтением и записью.

Как открыть базу данных в режиме чтения-записи? есть ли разрешение, требуемое для открытия базы данных (база данных не защищена паролем)?

ответ

3

Предположим, вы хотели бы всегда открывать только для чтения? В этом случае вам нужно скопировать файл в изолированное хранилище (в коде) и позволить приложению открывать базу данных один раз на устройстве, а затем копировать его обратно в свой проект, не открывая его на рабочем столе.

Смежные вопросы