2014-10-21 3 views
0

Здравствуйте, я работаю над проектом системы библиотеки в C#, используя Access, и мне нужно сделать резервную копию текущей базы данных и выполнить восстановление. Мое решение имеет несколько проектов. Моя БД хранится в проекте Library.Core. В этом проекте у него есть папка «Проекты» и в этой папке другая папка «Книги». В папке «Книги» находится каталог Books_NE.mdb. В моем другом проекте Library.View у меня есть папка Controls и в этой папке есть папка Tabs, содержащая мои разные вкладки, такие как мой TransmitPanel.xaml. На моем TransmitPanel.xaml я добавил кнопку под названием «Резервное копирование». Поскольку я использую Access, мне не нужны дополнительные шаги, если бы я использовал SQL. Я просмотрел сайт и нашел следующее решение и добавил его в свой код.Резервное копирование БД в C#

How to create a database backup on c#.net

File.Copy (sourceDbName, destDbName, правда);

Мой код для моего резервного копирования БД Баттона выглядит следующим образом:

private void BackupDatabase_Click(object sender, RoutedEventArgs e) 
     { 
      File.Copy(Books_NE.mdb, Books_NEBak.mdb, true); 
     } 

С выше код я получаю следующие две ошибки:

Название «Books_NE.mdb» не существует в текущем контекст. Имя «Books_NEbak.mdb» не существует в текущем контексте.

Мой вопрос: мне нужно добавить что-то дополнительное в мой оператор копирования или использовать другой метод?

+2

Вы должны поставить кавычки вокруг имен файлов. File.Copy ("Books_NE.mdb", "Books_NEBak.mdb", true); – dodald

+0

Спасибо, что додальд определенно помог. Теперь я получаю сообщение об ошибке: Не удалось найти файл Books_NE.mdb. Это потому, что у меня есть это в другом проекте в моем решении? Он находится в проекте под названием Books.Core => папке с именем => Проекты и в нем находится папка Books, которая содержит БД. Означает ли это, что мне нужно поставить полный путь? Также этот проект можно будет размещать где угодно от рабочего стола до диска c: в зависимости от того, кто его использует, поэтому постоянный путь не будет работать. Использую ли я что-то вроде: File.Copy (@release \ Projects \ Library, Books_NE.mdb, Books_NEBak.mdb, true); – CyberSensei

ответ

0

Вам нужно в кавычки строк

private void BackupDatabase_Click(object sender, RoutedEventArgs e) 
     { 
      File.Copy("Books_NE.mdb", "Books_NEBak.mdb", true); 
     } 
+0

Спасибо, Мэтт, это определенно помогло. Теперь я получаю сообщение об ошибке: Не удалось найти файл Books_NE.mdb. Это потому, что у меня есть это в другом проекте в моем решении? Он находится в проекте под названием Books.Core => папке с именем => Проекты и в нем находится папка Books, которая содержит БД. Означает ли это, что мне нужно поставить полный путь? Также этот проект можно будет размещать где угодно от рабочего стола до диска c: в зависимости от того, кто его использует, поэтому постоянный путь не будет работать. Использую ли я что-то вроде: File.Copy (@release \ Projects \ Library, Books_NE.mdb, Books_NEBak.mdb, true); – CyberSensei

+0

Таким образом, File.Copy будет находиться внутри любой папки, из которой выполняется ваш исполняемый файл. Вы можете указать относительные пути, такие как «../../Projects/Library/Bookes_NE.mdb». Это позволит файловой системе подняться на 2 уровня каталога, затем зайти в «Проекты/Библиотека» и найти файл mdb Books. Будет ли что-то подобное для вас? – Matt

+0

Папка, содержащая исполняемый файл, называется release. В этой папке находится папка «Проекты», а затем папка «Библиотека». Я добавил следующий код: File.Copy ("/ release/Projects/Library/Books_NE.mdb", "Books_NEBak.mdb", true); Несмотря на то, что там находится моя БД, я все еще получаю ошибку, не смог найти часть пути. – CyberSensei

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