Перенос базы данных на КПК приводит к пустой базе данных с 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. Вы должны были ответить на это давным-давно.