2015-06-25 3 views
0

Я пытаюсь создать внешнюю базу данных sqlite, я следую и тестирую текстовые файлы на съемном носителе и работает. Итак, я пытаюсь создать базу данных в съемном Хранение:Windows 10 removeableStorage SQLite database

public static async Task<String> CreateDatabase(string name) 
    { 
     var folder = await FindRemovableStorage(); 
     if (folder != null) 
     { 
      var file = await folder.CreateFileAsync(name, CreationCollisionOption.ReplaceExisting); 
      if(file!=null) 
      { 
       var ret = $"{folder.Name}{file.Name}"; 
       return ret; 
      } 
     } 
     return null; 

    } 

public async void ThirdCase() 
    { 
     var path =await DataLoggerService.CreateDatabase("db.dat"); 

     var connection = new SQLite.Net.SQLiteConnection(new SQLitePlatformWinRT(), path); //Cannot Open 

    } 

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

Более подробности того, что я сделал здесь: datalogger

Когда я закончу я хочу реализовать в Raspberry Pi, theorically тот же код для Windows, IoT или есть какие-либо изменения в SQLitePlatformWinRT?

EDITION: Больше анализов:

Я проверил базу данных с типичным, работает как шарм:

Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.dat"); 

Я хотел создать базу данных во внешнем хранилище, для этого мне нужно для добавления следующих этапов:

1.- Добавить возможность использования removeablestorage. 2.- Добавить файл типа ассоциации для того, чтобы иметь права управлять такого рода файлов

(подробности здесь: http://expediteapps.com/blog/data-logger-with-windows-10-iot-in-progress/)

Итак я изменить путь к съемному пути хранения, как «E: \ db.dat ", и он всегда сообщает CannotOpen.

SQLite библиотека PCL Он прибывает сюда:

SQLiteApiWinRT.cs

public Result Open(byte[] filename, out IDbHandle db, int flags, IntPtr zvfs) 
{ 
    Sqlite3DatabaseHandle internalDbHandle; 
    var ret = (Result)SQLite3.Open(filename, out internalDbHandle, flags, zvfs); 
    db = new DbHandle(internalDbHandle); 
    return ret; 
} 

Где ОТКРЫТО

[DllImport("sqlite3", EntryPoint = "sqlite3_open_v2", CallingConvention = CallingConvention.Cdecl)] 

общественности статической ехЬегп Результат Open (байт [] имя файла, из IntPtr db, int flags, IntPtr zvfs);

где я использую:

SQLite.UAP.2015, Version=3.8.10 

MORE Aditions:

Я проверил эту библиотеку https://www.nuget.org/packages/SQLitePortable/ и я кончаю в ту же ошибку, так что внутренняя.

И вот где дорога заканчивается, любая помощь?

ответ

0

Поскольку вы просили RaspberryPi 3 Windows 10 IoT SQLite реализации, вот шаги, которые я затем, чтобы сделать его работу: (Visual Studio 2015 Сообщество)

  1. Скачать: .vsix package for Universal Windows Platform из SQLITE страницы
  2. Установите пакет из папки загрузки
  3. в Visual Studio откройте Настройки-> NuGet пакет Manager-> Менеджер пакетов консоли и введите: Install-Package SQLite.Net-PCL
  4. Добавить требуется References (правая кнопка мыши -> Add Reference -> универсальный Windows -> Extensions)

Здесь я выбираю следующие:

  • Microsoft Visual C++ 2013 время выполнения пакета для Windows, универсальный
  • SQLite для универсальной платформы Windows
  • Visual C++ 2015 Runtime для универсальных приложений для платформ Windows
  • Расширения Windows IoT для UWP (Поскольку я являюсь u петь RPI 3 с GPIO Pins)

В основном я последовал за chrisbriggsy steps и пришлось добавить еще несколько ресурсов, потому что SQLite не работает

+0

"Долгое время назад я сделал это очень полную статью Http: // expediteapps .com/blog/storageing-data-with-windows-10-iot/Я действительно вникаю в то, что можно, и в случае, если он не изменился, на данный момент невозможно напрямую использовать базу данных из SDCard, мой вопрос здесь. –

+0

Мне очень нравится ваша статья. В случае, если ANYBODY все еще борется с ее созданием: 'path = Path.Combine (Windows.Storage.ApplicationData.Current.LocalFolder.Path," db.sqlite "); conn = новый SQLite.Net.SQLiteConnection (новый SQLite.Net.Platform.WinRT.SQLitePlatformWinRT(), путь); conn.CreateTable (); ' – Kyagos