Click here to Skip to main content
13,399,624 members (48,803 online)
Click here to Skip to main content
Add your own
alternative version


32 bookmarked
Posted 18 Apr 2007

5 Steps to Adding Data Replication to a Windows Mobile Application

, 18 Apr 2007
Rate this:
Please Sign up or sign in to vote.
The purpose of this article is to show how to add data replication to a mobile application through the use of .NET (C#).


The application that will be used in this article is based on an UltraLite 10 database and will use a technology called MobiLink 10 to allow for data exchange between the mobile UltraLite database and the central database. Although MobiLink has the ability to synchronize to most major databases (including SQL Server, IBM DB2, Oracle and Sybase), for the sake of this sample we will be using SQL Anywhere as the central (consolidated) database. All of these tools are included in the free SQL Anywhere 10 Developer Edition.


The following tools are required to get started with developing the application:

Step 1: Setting Up the Remote Databases

In my previous tutorial, we created a remote UltraLite database and mobile .NET application targeting a Windows Mobile (WinCE) device. Please ensure that you have walked through this tutorial to make sure you are comfortable using an UlltraLite database.

Step 2: Setting Up Replication

In this article, I am not going to walk through setting up data replication using MobiLink, as there are already a number of excellent articles and webcasts on the topic. In the project you downloaded (from above), there is a \db subdirectory containing a batch file called start_ml.bat. Execute this file to create a new SQL Anywhere central database. It will also start a MobiLink server and connect it to the central SQL Anywhere database. At this point, MobiLink is sitting waiting for client synchronization requests.

Step 3: Adding Replication Logic to the Mobile Application

Now that the central database and MobiLink have been configured and started, the next step is to add logic to initiate data replication from the mobile device to the MobiLink server (which in turn requests data from the central SQL Anywhere database). Open the application created from the previous tutorial and add a button of the Name: btnSync (as seen in the image below).

Screenshot - SimpleML1.jpg

Double click the button to add the following synchronization code:

private void btnSync_Click(object sender, EventArgs e)
    // Initiate data replication
        ConnUL.SyncParms.UserName = "user1";
        ConnUL.SyncParms.Stream = ULStreamType.TCPIP;
        ConnUL.SyncParms.StreamParms = "";
        ConnUL.SyncParms.Version = "customer";
    catch (System.Exception t)
        MessageBox.Show("Synchronization Error: " + t.Message);

Step 4: Starting the Emulator

Since we are going to want to test data replication, we will need to start the emulator and get an actual Active Sync connection between the emulator and the desktop. To do this, choose Tools | Device Emulator Manager. Right click on one of the Windows Mobile 5.0 emulators and choose Connect.

Screenshot - SimpleML2.jpg

Once the emulator starts, open Active Sync (on your desktop) and choose File | Connection settings. Enable the "Allows Connections to one of the following:" and choose DMA from the below combo box and press OK.

Screenshot - SimpleML3.jpg

In the Device Emulator Manager, right-click on the chosen emulator and choose Cradle (as seen below). This should create an Active Sync connection to your emulator. NOTE: If there is a problem, try disabling the DMA option in the Active Sync application and re-enabling it.

Screenshot - SimpleML4.jpg

Step 5: Deploy and Test the Mobile Application

Now that we have an Active Sync connection we can deploy the mobile application. From Visual Studio, change the target from "Windows Mobile 5.0 Pocket PC Emulator" to "Windows Mobile 5.0 Pocket PC Device" and choose Build | Deploy Solution.

Screenshot - SimpleML5.jpg

Once the application has successfully deployed, open File Explorer on the device, switch to the \Program Files\SimpleUL directory and click on the SimpleUL application.

Screenshot - SimpleML6.jpg
Screenshot - SimpleML7.jpg

At this point, we can now initiate a connection to the MobiLink server by clicking on the "Synchronize" button. You should see a few rows logged to the MobiLink server window which indicate that 5 rows have been downloaded to the mobile device. Try synchronizing again. This time you should notice that no rows are downloaded, which is because MobiLink is only sending the new data changes.

Screenshot - SimpleML8.jpg

Next Steps

At this point, we have set up a bi-directional data exchange of information between a mobile database and a central server. The obvious next step is to implement the ability to make changes to the mobile database and upload the changes. Since the remote database is already tracking changes, the only change required is to implement data uploads to modify the mobile application to insert, update or delete data.


In this article, we have created a very simple data replication application using a single standalone database. The MobiLink server is an extremely high performance server which scales to 100,000s of mobile users (such as the 2008 US Census, which will use MobiLink to support 500,000 mobile census workers). Since MobiLink supports the majority of existing databases on the server side, it can easily be integrated into any existing corporate system.


This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


About the Author

Liam Cavanagh
United States United States
Liam Cavanagh currently works as a Sr. Program Manager for Microsoft focusing new cloud services in the SQL Azure organization. Within this group, Liam has created a number of new services including SQL Azure Data Sync, Microsoft Codename "Data Transfer", and Eye on Earth leveraging the Windows Azure infrastucture.

Additionally, he works with enterprise corporations implementing enterprise cloud and mobile solutions and conducts training seminars worldwide.

Liam holds a Bachelor of Mathematics degree in Business and Information Systems from the University of Waterloo in Waterloo, Ontario, Canada.

Specialties: Windows Azure, SQL Azure, SQL Server, Cloud, Mobile, Replication and Database Synchronization Technologies

Liam Cavanagh is the founder of Cotega, a data notificaton and scheduling service for cloud databases. You can contact Liam at his cloud data blog.

You may also be interested in...


Comments and Discussions

QuestionMobilink not synced when used via Gprs Pin
leoboer7-Sep-07 9:54
memberleoboer7-Sep-07 9:54 
QuestionSynchronization problem Pin
tidalon11-Aug-07 7:31
membertidalon11-Aug-07 7:31 
AnswerRe: Synchronization problem Pin
Liam Cavanagh11-Aug-07 10:06
memberLiam Cavanagh11-Aug-07 10:06 
GeneralRe: Synchronization problem Pin
tidalon13-Aug-07 8:32
membertidalon13-Aug-07 8:32 
GeneralRe: Synchronization problem Pin
LeanneStuive15-Aug-07 5:57
memberLeanneStuive15-Aug-07 5:57 
Generalvery nice Pin
dino66611-May-07 23:29
memberdino66611-May-07 23:29 
GeneralRe: very nice Pin
Liam Cavanagh12-May-07 4:13
memberLiam Cavanagh12-May-07 4:13 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

Permalink | Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.180218.2 | Last Updated 18 Apr 2007
Article Copyright 2007 by Liam Cavanagh
Everything else Copyright © CodeProject, 1999-2018
Layout: fixed | fluid