Troy,
Which database I use has changed over time and depended partly on what the data
looked like on the desktop and what technology was available on the device. In
one approach I had DBF files on the desktop, copied them without any changes
using the Rapi app, then accessed them on the device using the SequitorSoftware
Codebase library. Pros - very fast, very easy to deploy to customer sites,
complete control of update code back on desktop in Rapi app. Cons - somewhat
expensive and somewhat labor intensive on the device side. Also creating new
files on the device is easiest if you download empty files in the Rapi app, so
you have to worry about clobbering good data that hasn't been uploaded yet on a
download.
My more recent apps work this way: the Rapi app creates delimited text files
from SQL data and copies those files to the device. The device app has business
classes that can construct collections of themselves from the text files and
persist themselves back. Pros - still good performance, powerful and easy to
deploy, cheap, flexible business classes work well for manipulating data on the
device using databinding. Very easy to create empty files on the device or add
to exisitng ones so no worries about clobbering good data with a download.
Cons - you have to keep the desktop and device apps in sync if you decide to add
more fields to the data on the device, but there are versioning issues with
either approach.
Both approaches have worked fine in the field. The only issues we've run into on
the support side have been occasional ActiveSync connection issues, which could
happen with any approach, and is less of a problem these days with ActiveSync
3.7. The Rapi app in both approaches can be used to download newer versions of
the device app and any DLLs it needs (as well as updates to the compact
framework if needed) all in one neat package. So if a user cold-boots a device
or tries to make the battery last for several days without recharging <g>, the
Rapi app can be used to restore the device to a known state as well as managing
moving the data back and forth.