views:

2287

answers:

19

I need to build a simple, single user database application for Windows. Main requirements are independence from windows version and installed software. What technologies (language/framework) would you recommend? My preference for language is the Visual Basic.

EDIT: What about VB.Net and SQL Server Compact Edition?

+15  A: 

I would recommend Sqlite. It's completely self-contained, and public domain so there are no license issues at all.

Greg Hewgill
A: 

SQLite may be what you are looking for. http://www.sqlite.org/

Tubs
+8  A: 

Single user or multi user?

For single user, the answer would be SQLite

For multi user (or multithread), try MySQL or PostgreSQL.

Sklivvz
A: 

Depending on your needs for the application.

You could use SQLLite which is a very nice database with no installation required.

You could also use Microsoft SQL Server: SQL Server Compact 3.5.

Both are free!

Davy Landman
A: 

Well, assuming you don't have any prior experience...

You need some kind of persistence storage (for example a database) and a client. For the storage you could use almost anything. For example you could create your DB in MS Access and just ship it as a file, using ADO to access it. Other options are MS SQL Express edition (comes pre-installed on some machines or could be installed for free) and plenty of open source databases like SQLite

For the client side you could not go wrong with VBScript and ADO (using OLE DB drivers). They come with every Windows installation since Dark Ages, you will have plenty of references/tutorials/answers online. A drawback: no UI to speak of, so you'll have to build a command line interface (which was for a 'simple' application).

If you want to build a UI I would suggest using .NET WinForms. The overhead will be substantially bigger but .NET is now installed on all XP/Vista machines and even if it is not you could always install the framework with you application.

Ilya Kochetov
A: 

It's not quite clear from your post whether you want a web application or not.

For a web application, MySQL works effectively on the Windows platform. You also have nearly limitless options for development environment including, PHP, Ruby on Rails, Django, and .Net.

If you are looking at a desktop application, MS Access might be suitable ... incredible easy for simple applications.

Toby Hede
+2  A: 

SQLite will work for a local desktop application. If you want several users, a few gigas of data, and multiple connections I would use mysql or Firebird.

http://www.mysql.com/ http://www.firebirdsql.org/

borjab
A: 

If you want to build application that can move to other pc easily,I prefer Microsoft Access it is small database easy to use and no need to install.It suites for application like Addressbook,mini crud system.

But if you want to develop enterprise database system you should use MySQL instead.

Krirk
A: 

I do not understand what you mean with "independence form [...] installed software". You ever need at least the DBMS installed as well as one client or user interface.

I recommend using MS Access. It is easy and cheap for simple, single user tasks and rapid prototyping development. Only development version have to be bought ("normal" Access) to create DBs. Runtime version of Access 2007 can be downloaded free of cost from Microsoft Homepage - for using only the database you created.

Also it combines DBMS and GUI frontend in same tool.

+7  A: 

Since your requirement is a windows based application i would suggest that you go with sql server 2005 express edition which is a free tool, but with certain small limitations. you can upgrade to a bigger version when you go with a paid version.

There are other DB engines like SQL Lite or FireBird, choose them if the support and growth options they provide are good enough for you

Additionally, Visual Basic is eof lifed. VB.NET might be a better windows based platform currently. It would give a better platform / features to start with and when you want to expand the talent you have working on the project, i assume .NET talent might be more available than programmers who want to work with a dead language.

A: 

Dare I mention MS Access...?

Rik
Sure, as long as you are willing to face the consequences.
epochwolf
A: 

Best Option would be to create a Win32 native application using Delphi and use SQLLite as the database.

Reason being Delphi can produce native win32 applications without any other product being installed on the machine.

Kishork
Delphi is cool, and you can indeed create dependency-free native win32 apps with it. However, I don't think it's a good idea to steer a new programmer towards Delphi, when they could use a project like this to improve their skills in a more mainstream programming environment.
MusiGenesis
+1  A: 

As mentioned, SQLite is a great single-user database. This page has VB/SQLite examples. Once concerns is that SQLite parses foreign key constraints, but does not enforce them. You can use this code to generate "foreign key triggers" for SQLite, thus gaining an easy to use database with FK constraints.

Depending on how demanding your database needs are, though, you might want to consider MS Access.

Ovid
Update: As of version 3.6.19, SQLite supports foreign key constraints[http://www.sqlite.org/faq.html#q22].
Govert
+1  A: 

I used SQL Server Compact Edition. It's like sqllite. A single SDF file accessed using ADO.NET. You can develop your application using Visual Basic .NET and manage you database (add tables, columns, constraints, etc...) using Visual Studio.

ema
A: 

If you are looking for small footprint (up to a few MB) and easy deployment (end-user should only install your application to get it working), then your options are SQLite and Firebird embedded.

Of those two, I'd pick Firebird any time, because of it's full support for SQL (you can't, for example, drop a column in SQLite), ACID compliance, and ability to go client/server without any changes (just change the connection string from embedded to server) to the code if you ever decide to let multiple users work on the same database.

Not to mention that you can use full server to develop (which means your application and database administration tool can be connected to database at the same time).

Milan Babuškov
+2  A: 

FireBird SQL server will be thing of choice. It can be used in both embedded and multiuser mode like traditional databases. It implements many of the SQL standards and has strong community base. It is available for Windows, Linux, Solaris, OS X, HP-UX

TheVillageIdiot
A: 

I'm successfully using Turbo Delphi (free for commercial and no commercial use) + ZeosLib (zeos.firmos.at).

The only things you need to distribute with your .exe are the database client dlls (no need to install the client, just put the dlls in the same directory).

A: 

Would Kexi work?

yonkeltron
+1  A: 

duplicate of http://stackoverflow.com/questions/1578070/what-options-are-there-for-a-quick-embedded-db-in-net/1578102#1578102

I'll repeat my answer from there:

"Or theres Esent, the built in database that exists in every copy of windows. Read about it here: http://ayende.com/Blog/archive/2008/12/23/hidden-windows-gems-extensible-storage-engine.aspx" and http://www.codeplex.com/ManagedEsent

mcintyre321