Okay, so I spent some time yesterday implementing JDBC - it's an abstract database interface that supports just about every DMBS that exists. It works quite well with MySQL, and I was able to get it to work with some hacks with SQLite.
Here's an example of how to configure Settings.ini for MySQL:
[BNUBot]
numBots=1
db_driver=com.mysql.jdbc.Driver
db_url=jdbc:mysql://[host]:3306/[database]
db_username=[username]
db_password=[password]
[1]
packetLog=false
enableGUI=true
...
The default settings are:
db_driver=org.sqlite.JDBC
db_url=jdbc:sqlite:database.db
db_username=
db_password=
I'm considering dropping support for SQLite because it doesn't support many things that are just too useful to pass up. If I do, then the bot will still be usable without a database, but it will require disabling the CommandEventHandler plugin - that's the one that does all of the bot commands.
Summary:
Keeping SQLite support:
Pros: Simple setup - no user configuration required
Cons: Cripples DB functionality; DB gets corrupted easily; must maintain two parallel schemas
Dropping SQLite support:
Pros: Enables complex table relationships, inline row updating, triggers, views
Cons: Requires the user to configure a database to use CommandEventHandler
If you'd like to weigh in, here's your chance.