views:

325

answers:

10

After doing web development for quite a while, I am faced with a new client who wants a simple database application to run outside the interweb.

He is quite adamant about using Microsoft products. "We don't want no steenking open sources" was his stance.

It's been quite a while since I actually did desktop development, and most of my tools are rusty, out of licence, or just plain lost. I have been concentrating lately on L.A.M.P. applications, but that doesn't quite transfer back to the desktop environment.

Some options:

database:  MySql (my fav), Access, MSSql
language:  C++, VB, PHP, Java, C#

I have been gravitating towards Access/VisualBasic, not because I like it very much, but because it is simple to set up and deploy. A database server (MySql, MsSql) would probably be too hard to deploy/maintain for the novice computer user. Even though from a purist point of view, C++ is the better language, it would take too much effort to bootstrap an application (IMHO). Java is too cumbersome (again IMHO).

The other consideration is cost. Although I can convince him to acquire proper software runtime licences, I probably won't be able to get him to purchase necessary development tools, and certainly the project isn't paying enough to justify substantial purchases which will probably not be used again.

I would appreciate your input on platform selection, development tools and application frameworks, thanx muchly.

Edit 23-May-09

Thank you everyone for your excellent advice.

I have settled on C# Express. So far, I've avoided learning C#, but what's another language?; and I have a whole week to get up to speed.

I am waffling on whether to go with Access or MSSql (Express) database. With Access, I can deploy the database as a stand-alone file, but MSSql requires that the database server be installed. (AFAIK)

The client requires that the application be installed in multiple locations, some of which are mobile and not connected to the interweb. The dicey part is reconciling all the copies of the database, and determining which is the connonical version.

+1  A: 

C# + MSAccess/MSSql(express) = Profit.

I don't know exactly your requirements, but i would suggest the following:

If you had the budget:

  • Visual Studio Proffessional
  • MS SQL or Access
  • DevExpress Components for forms and database persistence.

If you don't have the budget

  • Visual Studio Express
  • MySql
  • NHibernate or Linq2Entities
  • WPF or Windows Forms
Konstantinos
+6  A: 

I'd go with the Express editions of C# and MSSQL. Free and easy to use/set up/deploy. Here's a deeper link to some general material specifically about using VS Express editions for Windows applications.

tvanfosson
Not only free tools, but free runtime (assuming you have Windows). Also your newly acquired C# skills will be usable on Mono.
Cheeso
Thanks for your prompt replies.
dar7yl
A: 

C# or VB.Net with SQLite.Net for the database. Pretty much cross platform across the board.

Joel Lucsy
A: 

If you are developing application on desktop. I would say

  • Scripting Language:ASP.NET(C#)
  • Database: MS SQL 2005
  • Server: Windows Server 2003 with IIS 6
Syed Tayyab Ali
Make sure you are using Express edition of above product.
Syed Tayyab Ali
In case of server, you can host website on external server. then you dont need to setup your own server.
Syed Tayyab Ali
I think that "desktop application" means an EXE run on the local machine, not a web application: e.g. Winforms or WPF, not ASP.NET.
ChrisW
- what he said...Also, must be simple to deploy - multiple copies run off of clones of DB. - novice users who can't be bothered with database servers.
dar7yl
If it's an application on the desktop, it doesn't need a server, or ASP.NET.
Cheeso
Dar7yl, I'm not sure but it doesn't say anything about cloning the DB in the Q... he says "simple database application." Could be distributed or not, so we're not sure.
Yar
Whoops, sorry, I just got that you're the questioner dar7yl :) Okay, clones of the DB, then use SqlExpress.
Yar
+1  A: 

Microsoft Visual Studio has express editions which are either cheap or free. That said, the choice is obvious: Winforms with C# or Visual Basic .Net (it's just a syntax question) talking to a MySql backend (for cost issues).

Microsoft Winforms is awesome but limited to Windows (Mono notwithstanding). Enjoy the project. It's way more fun than LAMP in my opinion, but not nearly as universal.

Edit: If you have the extra time and patience (of course you would have to eat the hours and not bill the learning time), though C# is brilliant and very mature (even in .Net 1.1 it was :), you may want to write the app in one of the Python variants for .Net. That's what I would do... Python has a huge following and will probably come up sometime in your non-Microsoft future. C# on the other hand... well, if you Mono it could come up, but otherwise, it's like learning Italian: good in Italy, but useless otherwise. (I should know, I'm writing this from my place in Venice...)

Yar
Why not MS SQL Express?
ChrisW
My reasons are three-fold (or more-fold :). First and most important, it's not clear from the question what the distribution needs of the App are, but for multiple users, Express has limits (I think) and it definitely has size liimits, import/export limits... MySql is the real deal for free. Secondly, using MySql forces the devs hand to make stuff as portable as possible. Third, the dev knows MySql. If the DB is embedded, however, then I would use SqlExpress (Sqlite seems to be another story)....
Yar
+1  A: 

I don't know why you think another database engine would be easier to administer than MS SQL. There's a free-as-in-beer edition of MS SQL called 'Express' that might suit. It supports all the same DDL and SQL features as the full database engine: in case you need them; it's just limited in size and number of CPUs.

Likewise there are free/express edition of the developer tools, which aren't missing much functionality (most notably perhaps the ability to write an installation program, but there are other free ways to do that). I don't know PHP or Java but if I were given a choice between C++ and C# (I'm familiar with both), I'd say that C# is virtually as capable for most applications except perhaps soft-real-time, and is quite a bit easier and more pleasant.

ChrisW
Hi Chris, I answered your comment in my answer above. Like free beer, SQL Express has some limits that you wouldn't find out about until you tried to, for instance, make a backup (check the matrix http://www.microsoft.com/sqlserver/2005/en/us/compare-features.aspx). MSSql is and always has been the most expensive part of their dev stack... no free ride nor beer.Also, if I recall correctly, the Express editions of VS don't allow integration with VSS... which is okay but not great.Congratulations on not knowing PHP. I wish I could say the same :)
Yar
FWIW you can backup, from SQL Server Management Studio Express and/or using an API (i.e. using BACKUP DATABASE and RESTORE DATABASE commands).
ChrisW
+1  A: 

My preference would be C# with MSSQL Express. You can use the visual studio express edition for your development environment.

Jesse Weigert
+2  A: 

I suggest: Just use Access. It works for small, simple, single user databases. It's not "just a database" it's also a "database application" and "database application development environment" in it's own right. That is: It's ridiculously quick and easy to throw together a db, CRUD forms, and simple reports; and the built-in VBA is handles most business logic, and you can allways call-out to C# dll's if you need to do anything "interesting".

Just tell the customer they need to loan you the production box for the duration of development (fair enough), and that Access (no need to mention which version) is about $200.00.

Customers who don't pay get they get what they ask for, not what they need.

corlettk
Access *might* make sense if he already had the licenses. Why pay money for an Access license when C# express and MS SQL Server express are free and offer much richer functionality?
John M Gant
+1 for originality and a good point: I use OpenOffice Spreadsheet with the horrible macro language for some of my own apps.
Yar
A: 

If you need a database local, one file (.dat) or the suggested from one's IDE (berkeleydb) or Sphinxsearch() Relevance sort order with pivot tables are often what users want and no database required only i/o according to document or graphics type.

Larsson
A: 

Have you considered Delphi or C++Builder there are free versions available.

stukelly