views:

194

answers:

5

I am in the midst of writing a small program (more to experiment with vs 2010 than anything else)

Despite being an experiment it has some practical use for our local athletics club.

My thought was to access the DB (currently online) to download the current members and store locally on a laptop (this is a MS sql table, used to power the club's website).

take the laptop to the event (yes there ARE places that don't have internet coverage), add members to that days race (also a row from a sql table (though no changes would be made to this), record results (new records in 3rd table)

Once home, showered and within internet access again, upload/edit the tables as per the race results/member changes etc.

So I was thinking i'd do something like write xml files locally with the data, including a field to indicate changes etc?

If anyone can point me in a direction i would appreciate it...hell if anyone could tell me if this has a name, I'd appreciate it.

+4  A: 

Essentially what you need is, in addition to your remote data store, a local data store on your desktop. You could then write your code by hand to sync the data stores when you go offline / online, or you could use the Microsoft Sync framework to handle it for you.

I've personally used the Sync framework on a number of projects and once you get used to the conventions, it's pretty easy to use.

lomaxx
Yes use SQL Server compact edition on your laptop. see good example here http://keithelder.net/blog/archive/2007/09/23/Sync-Services-for-SQL-Server-Compact-Edition-3.5-in-Visual.aspx
Daveo
this is looking positive...I've downloaded as much as i think i can read ...for nowTHANKS!
hmmmmmm OK I went abrowsing found a walkthrough on msdn (cc488233.aspx) however I have ended up with a local .sdf file and a dataset.xsd in my project.I was then going to access this via a repository, but fell in a heap when the linqtoSql failed. I really wanted to use linq for this (as it's a learning exercise) Is there a means? how do I reference this locally? Can I get all the great lazy loading ability (guess that's not such a concern on a local database?)
+1  A: 

If you're using MS SQL Server for production, and you only need to work offline on your personal computer, you could install MS SQL Server Express locally. The advantage here over using a different local datastore is that you can reuse your schema, stored procedures, etc. essentially only needing to change the connection string to your application (which you could run locally too through Visual Studio). You would have to write code to manually sync your online and offline db instances, but since it's a small application, it may be reasonable to just copy the entire database from production to local and then from local to production when you get home (assuming you're the only one updating the db, and wouldn't be potentially wiping out any new records entered in production while you were at the event).

Stephen Swensen
+1  A: 

If a local storage format is what your after. SQLite is one option. You can copy your tables from the server to your local SQLite db.

You could also save your data to files, but XML is a horrible format for doing this. You'll probably want to use YAML or JSON instead.

Jay
+1  A: 

Google Gears http://gears.google.com/ is intended if your app is a web app (which I didn't quite get what it is from your description)

Khnle
+1  A: 

You may want to take a look at SQL Server Compact -- it provides some decent capabilities with synchronizing back with the mothership SQL server.

Robaticus
Please provide a link if you're going to advertise something. We're too lazy to search.
Jay
Ok, I'll scratch my head on that comment, but to satisfy you: http://www.microsoft.com/sqlserver/2008/en/us/compact.aspx
Robaticus
@Robaticus, ty +1
Jay