Перенос базы данных на КПК приводит к пустой базе данных с RAPI2

У меня есть WorkAboutPro 4, и я запускаю приложение. Это приложение использует базу данных SQLlite.

Теперь я также запускаю компьютерную программу рядом с ней, здесь я использую RAPI2 для работы с моим карманным устройством. Как только я подключаю свое устройство, запускается функция, и она сначала перетаскивает мою базу данных с моего карманного компьютера на мой компьютер. Затем я делаю что-то с этим и продолжаю толкать его обратно. Проблема в том, что база данных, которая возвращает, всегда равна 0 КБ и не имеет данных, даже таблиц.

//Create my Paths
string myDevice = device.GetFolderPath(SpecialFolder.ProgramFiles);
string deviceFile = myDevice + @"\PPPM\SQL_PPPM.s3db";
string myComputer = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase).Substring(6);
string localFile = myComputer + @"\SQL_PPPM.s3db";

//Get the Database
RemoteFile.CopyFileFromDevice(device, deviceFile, localFile, true);

//Do Stuff
try
  ....
catch(Exception ex)
  ....

//Push The Database back
RemoteFile.CopyFileToDevice(device, localFile, deviceFile, true);

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

Таким образом, единственное, что идет не так, это когда я пытаюсь отправить полную базу данных обратно в свой HandHeld, что приводит к пустой базе данных размером 0 КБ.

У кого-нибудь есть идея, почему это так?

Лотос ~

Редактировать: если вы знаете лучший способ определить, подключено ли устройство, и нажать / вытащить файлы с КПК, пожалуйста, дайте мне знать.

1 ответ

Решение

Так что я столкнулся с той же проблемой. Скорее всего, это связано с тем, что ваши соединения Sqlite все еще открыты.

Для меня лучше всего было изменить класс SqlDataAccess и начать использовать "using".

Пример:

using(var connection = new SQLiteConnection(ConnectionString))
{
   try
   {
      connection.Open();
   }
   catch (Exception e)
   {
      throw new Exception(e.Message);
   }
   finally
   {
      connection.Close();
   }     
}  

Для меня то же самое работало с DataAdapters.

Удачи в будущем, и помните, никогда не бросайте себя в случае с Denvercoder9. Вы должны были ответить на это давным-давно.

Другие вопросы по тегам