Search code examples
c#databasedesktop-applicationinventory

Database for an Inventory System in C#


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.


Solution

  • 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.