   Database questions
  I'd like to setup a database for a game I'm working on, that's going to be used with a Visual C# 2005 express.  There a few things I'd like to know before getting started:1.  What's the difference between the seemingly 100 versions of SQL?  Why are there so many versions, which ones are free, and which is the best to use?2.  I understand how to read/write from a database file(from watching a tutorial), but I don't understand process of creating the actual database file itself.  What do I need in order to create the file, and is there any tools to make this quicker?3.  IS it reasonable to setup a database for a single-player game?  Or should I just read/write from an INI file?Thanks for your time, and I appreciate your answers.   
  Running a database requires a database server. That means that the user will have to have a full database server running on their machine, which you almost certainly don't want (And, more to the point, they won't want [smile]).Usually a database runs on a server you own, and another process on either that server or another server communicates with the database. Then the clients (players) will communicate with your app. You really don't want the clients communicating with the database directly for security reasons (One hacker could destroy the entire DB).One free database is MySQL, which is what I run on my webserver.If, however you want a simple database (more a SELECT engine) for a single player game, you can get SQLLite, which doesn't require a whole database server to be running, since it just writes a "database" to one file on disk, and just requires an extra DLL with your app.It's not usually a good idea to use a database for a single player game, an ini file would be much more simple unless you need to do a lot of SQL query like stuff, in which case SQLLite would be a reasonable option.   ;  For Windows, I think you could use the JET engine, it's built in isn't it? (JET is kind of the core of MSAccess IIRC).;  Your options are basically limited to a desktop database solution, rather than a server. For a game, setting up a database is too intrusive and not many people will want your game on their system. Don't plan on using MS Access (whether Jet or ODBC) unless you are ok with requiring your gamers to have Office installed.If you plan to use C#, I would recommend using XML files to store your data instead of a database. ADO.NET has classes specifically designed to work fast with XML files, from a programming perspective ADO.NET treats XML and databases the same, you can still write SQL to insert, update and delete records, and write queries. By all means use a visual database designer like SQL Server 2005 Express to set up your tables and relationships if you don't want to write XML directly, and just export the schema to an XLS schema file so ADO.NET can load it up.Keep in mind that choosing this means you will not get the performance benefit of indexing, and the decision to use SQL in the first place incurrs some overhead. I suggest keeping the SQL / XML interactions in your pre-loading process, and dump the results of your query into a hash table or something for better real-time performance.   