Как я могу исправить эту ошибку "Путь не найден"? - PullRequest
1 голос
/ 12 марта 2009

Как я могу решить эту проблему разработки мобильных приложений?

При подключении к БД

dataSource = \\..datafile.sdf

Я получаю эту ошибку

"Путь не найден"

Я использую serviceCE dll для доступа к данным.

Ответы [ 4 ]

3 голосов
/ 21 марта 2009

Путь, который вы ввели, это относительный путь. Windows CE / Mobile не поддерживает относительные пути.

Из этого следует, что, поскольку на устройстве Windows Mobile отсутствует концепция текущего каталога, как можно найти ресурс, для которого известен только относительный путь? Программа .Net всегда имеет доступ к модулям, из которых она состоит (обычно компонент .Net состоит из одного модуля, упакованного в файл DLL или EXE). Следующая строка вернет абсолютный путь к текущей выполняющейся сборке.

string modulePath = this.GetType (). Assembly.GetModules () [0] .FullyQualifiedName;

немного больше кода, вы можете получить каталог, в котором работает ваша программа

Path.GetDirectoryName (this.GetType (). Assembly.GetModules () [0] .FullyQualifiedName)

Используя эту информацию, вы можете построить правильную строку пути к вашему ресурсу.

примечание: Если вы разрабатываете с использованием собственного APIS, используйте следующее: GetModuleFileName (GetModuleHandle (NULL), pszFullPath, MAX_PATH);

3 голосов
/ 12 марта 2009

В Windows CE нет понятия относительного пути, поэтому даже если вы «исправите» неверный относительный путь, он не будет работать. Вы должны использовать абсолютные пути.

0 голосов
/ 12 марта 2009

"\ .." не имеет смысла. Это означает, что ваши данные находятся на один уровень выше корневой папки, которая не существует. Кроме того, ctacke сообщает мне в комментариях, что CE все равно не поддерживает относительные пути.

Если в вашей ОС поддерживаются относительные пути , остальная часть моего ответа остается в силе. Я оставлю это для дальнейшего использования (и, вероятно, поскольку многие люди, кажется, понижают голос, не читая весь пост в первую очередь), некоторая потеря репутации. : -)

Если файл данных находится на один уровень выше папки, в которой находится ваше приложение, правильный путь будет «.. \ datafile.sdf»; в некоторых языках программирования вы должны избегать обратной косой черты, чтобы она стала '.. \ datafile.sdf'

Где на самом деле находятся ваши данные и где находится ваше приложение? Если приложение находится в \ yourapp \ folder \ bin, а ваши данные - в \ yourapp \ folder \ data, путь от приложения к данным будет «.. \ data \». Если файл данных находится в папке \ yourapp \, путь будет «.. \». Опять же, вам, вероятно, придется удвоить обратную косую черту, чтобы избежать их, в зависимости от используемого вами языка.

0 голосов
/ 12 марта 2009

Полагаю, что-то не хватает между \\ и ..

...