Правильный способ указать строку подключения к базе данных в DataSet.xsd - PullRequest
1 голос
/ 16 февраля 2011

У меня есть приложение Windows CE Form (NETCF 3.5), которое я создал с помощью Visual Studio 2008 (c #) - (Однако суть моего вопроса, вероятно, относится и к обычному приложению Windows).

Приложение реализует базу данных SQLite, которую я поместил в проект, то есть местоположение базы данных находится в подкаталоге моего проекта. Таким образом, строка подключения к базе данных выглядит примерно так:

@"Data Source = C:\src\myApp\data\mydb.s3db"

Соединение с базой данных в порядке и работает.

После создания базы данных я добавил набор данных с помощью «Мастера настройки источника данных» VS2008 (в VS2008 выберите «Данные> Добавить новый источник данных ...»). Мастер позволяет нам создать соединение с существующей базой данных, а затем выбрать таблицы из этой базы данных, которые будут использоваться в наборе данных, который мастер собирается создать.

Таким образом, мастер отлично справляется с созданием набора данных, который позволяет нам программировать против него. Проблема, с которой я сталкиваюсь, заключается в развертывании приложения на моем устройстве WinCE.

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

Корень проблемы заключается в том, что строка подключения к базе данных, определенная в наборе данных, относится к устройству разработчика, а не к локальному пути для устройства WinCE.

Например: строка подключения в наборе данных установлена ​​на

@"Data Source = C:\src\myApp\data\mydb.s3db"

вместо полного пути целевого устройства, аналогичного

@ "Источник данных = \ Program Files \ myApp \ data \ mydb.s3db"

Мне удалось решить проблему, вручную отредактировав файл набора данных .Designer.cs (с помощью метода InitConnection ()). Тем не менее, было бы неплохо, если бы VS2008 мог как-то управлять для меня строкой соединения - то есть в режиме разработки строка соединения указывает на базу данных на моем компьютере разработчика. В режиме развертывания строка подключения указывает на базу данных на устройстве.

Есть ли способ указать строку подключения, чтобы указать относительный путь, а не полный путь, может быть? Или

1 Ответ

2 голосов
/ 18 октября 2011

Используйте "| DataDirectory |" в строке подключения.

Цитата из http://social.msdn.microsoft.com/Forums/en-US/sqlce/thread/dc31ea59-5718-49b6-9f1f-7039da425296/ ...

| DataDirectory | (заключенный в символы канала) является строкой подстановки, которая указывает путь к базе данных. Это избавляет от необходимости жестко кодировать полный путь, что приводит к нескольким проблемам, поскольку полный путь к базе данных может быть сериализован в разных местах. DataDirectory также облегчает совместное использование проекта, а также развертывание приложения.

Например, вместо следующей строки подключения: "Источник данных = c: \ program files \ MyApp \ Mydb.sdf"

Используя DataDirectory, вы можете получить следующую строку подключения: «Источник данных = | DataDirectory | \ Mydb.sdf»

Чтобы установить свойство DataDirectory, вызовите метод AppDomain.SetData. Если вы не установите свойство DataDirectory, для доступа к папке базы данных будут применяться следующие правила по умолчанию:

  • Для приложений, помещаемых в папку на компьютере пользователя, папка базы данных использует папку приложения.
  • Для приложений, которые работают под ClickOnce, папка базы данных использует конкретные папка данных, которая создается.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...