views:

749

answers:

6

I'm upgrading an inventory system for a jewllery store that was originally built with MS Access. The application stores items, customers, vendors, and displays data about items stored. Reporting tool should be considered to generate reports for items in a printable format.

The system should be built in C#, but I've not made the decision yet for the database engine I should use for this application. What do you suggest?. I thought of SQLite, but I need to keep in mind that migration items from the old database to the new updated one is a must. And since it was originally built with MS Access. Should I just stick with MS Access and build my application with it?.

Edit: This is a single user system.

+3  A: 

since you're using C#, Sql Server would seem to be a logical candidate; MySql is also a good choice.

I would not consider using MS-Access or SqlLite in a production application; too many drawbacks/limitations - see all this stuff for examples.

Steven A. Lowe
I agree with this you could make your code database agnostic with an ORM then it doesn't matter too much.
Aim Kai
I wonder what particular limitations of SQLite you are concerned with.
Daniel Straight
@[Daniel Straight]: the biggest drawback is its reliance on O/S level file locking for concurrent access control; see http://www.aspfree.com/c/a/Database/Using-SQLite-for-Simple-Database-Storage/
Steven A. Lowe
A: 

Sql Server, then you can add reporting services, and the migration path from access should be easy. You could even start with the Express edition.

Nate Heinrich
+2  A: 

This decision depends on many factors. Like how many concurrent users will be accessing this application (Access does not allow more than 5).

  • How big is the database?
  • How much growth do you expect?
  • What features do you need besides basic data storage?
  • What is the budget?

The answers to these questions will help you to select the right product. There are many different ones out there. So far i've been very pleased with SQL server and MySQL (which is free). I'd steer clear of Oracle though I found it it be a hassle to work with and generally a heap of junk.

[Edit]

Based on your last comment I would go with SQL Server Express with advanced services http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=b448b0d0-ee79-48f6-b50a-7c4f028c2e3d. This product is still free. The only limitation is the database can't be larger than 4 gigabytes or something like that. I hope this helps.

James
Single user. Besides basic data storage, reporting service is required. [This is somthing similar to what am trying to produce.][1] [1]: http://www.executivpro.com/inventoryimage.html. What do you think the database used to build that application?.
DanSogaard
@DanSogaard - Check my last edit.
James
+6  A: 

SQL Server Express is a good choice if you want to stick with MS Technologies. Since your conversion is going to be one off, you can make it in various ways - either looking up for a DB Conversion tool (seems like there are some of them around), or even write your own, using either DTS, SSIS or handcrafted code, if you need to.

Wagner Silveira
It's a desktop application. SQL server is a server class engine, I need a simpler solution that is easy to deploy.
DanSogaard
That is I am suggesting SQL Server Express. Take a look at the features here (http://www.microsoft.com/express/Database/). My understanding is that SQL Server Express was created for the type of app you have in mind, with the benefit of using the common SQL Server approach, and the ability to scale to full blown SQL Server if you ever need it.
Wagner Silveira
@DanSogaard: I agree with @Wagner Silveira: SQL Server 2008 Express is probably your best bet. It's pretty solid while still being lightweight, and you've got scalability in the form of a bigger version when you need it. Plus it's free! Can't lose, there.
Randolpho
A: 

Take a look at PostgreSQL, http://www.postgresql.org/

It's free, fast and has providers for .NET

Jeffrey Hines
+2  A: 

For single-user desktop apps in a Microsoft ecosystem, consider SQL Server Compact Edition rather than the full-fledged server product. Here's the relevant part of Microsoft's overview:

Microsoft SQL Server 2005 Compact Edition (SQL Server Compact Edition) is designed for developers who need light weight, in process relational database solution for their applications that can be developed and deployed on desktop as well as on mobile devices. SQL Server Compact Edition Runtime can be used to develop and deploy applications on desktop.

SQL Server Compact Edition is a powerful, yet lightweight relational database engine that makes it easy to develop desktop applications by supporting familiar Structured Query Language (SQL) syntax and providing a development model and API consistent with SQL Server.

Some of its limitations (no nested transactions, for example) are described in its Wikipedia article and comparisons to other embedded databases abound (as far as I can tell, there isn't a consensus about a best option).

There's at least one SO question addressing migration from Access and a poster here links to a list of SQL Server CE tools, including various kinds of migration software.

Jeff Sternal