Jeff Duntemann's Contrapositive Diary Rotating Header Image

Where’s the rest of SQLite?

Wait. Oh. That’s all there is.

Really.

I had this problem once before, with the Atlantis word processor. It’s 5MB installed. 5. The first time I installed it I suspected I had downloaded a corrupt file, but no: However they did it, the wizards over at Atlantis implemented a damned fine Word 2000 clone in 5MB. It doesn’t have the collaboration features, but for solo work it’s a very big win, and exports extremely clean epubs as a side benefit.

For a fair number of years now, my non-Delphi database work has all been in MySQL. (With Delphi I use a VCL product called DBISAM, which is linked into the compiled .exe and doesn’t have to be installed separately.) Because SQLite is available for the Raspbian OS and MySQL isn’t (as best I know; Percona runs on Arch Linux) I’m going to be using SQLite as a database teaching tool. So when I installed it the other day, I stared at the 600K .dll and wondered, Is that all there is?

Yes, that’s all there is, my friend–so let’s keep dancing. Let’s break out the tools and have a ball. ‘Cause that’s all there is!

Wow. I verified it by searching for the sqlite3.dll file on my system. The Calibre ebook manager uses an older version (as do a few other things) and the file was not only that same unbelievable size, but smaller. Can you implement a relational database engine in only 372K? I guess you can.

One reason SQLite’s .dll is so small is that it contains no UI at all. There’s a bare-bones command-line management utility available as a separate download. As some of you may know (or suspect) I dislike command lines intensely. So it wasn’t long before I had two free GUI management apps for SQLite databases. One was recommended by Chris Newman’s book on SQLite, SQLite Database Browser, and the other is SQLiteMan. Both are free and installed without drama. So far I prefer SQLiteMan, but it’s really too early to tell. SQLiteMan is supposedly compilable on the RPi. I intend to try that. I’ll let you know how it goes.

One other reason may be that SQLite is “typeless,” which means that the engine does not do type-checking on reads and writes. You can put anything you want in any field (apart from key fields, which are treated specially) and if it makes no sense, it’s your screwup on your conscience. I’m a strongly typed guy and this would rankle, if it didn’t allow a database engine to come in at half a megabyte.

There are wrappers for most common languages, including Lua and Lazarus/FreePascal, both of which I have here and have been fooling with in recent months. I’ve been very spoiled by DBISAM, and I’m interested to see how well SQLite works in non-server applications. More as it happens.

8 Comments

  1. Jeff: I use SQLite Manager, an add-on for Firefox. Despite being a Firefox add-on, it’ll manage any old SQLite database on your drive.

    Cheers, Julian

  2. Bob Fegert says:

    I just downloaded the Atlantis word processor.
    This looks really nice! 35$ to register…what a steal!
    I like the epub generation ability.

    It appears to have been compiled by the Delphi compiler…at least it has the telltale Borland ‘MZP’ as the first three bytes of the exe. ‘P’ for Pascal.

    1. Ha! I never even thought of looking! Funny how nobody considers being written in Delphi a plus except a few of us old-time goofuses.

      In fact, I consider Atlantis to be the Turbo Pascal of word processors.

  3. Erbo says:

    SQLite is good enough that both iOS and Android have the library bundled in. One of their pages lists many well-known companies that use it, including Apple, Dropbox, Mozilla, Google, and Microsoft.

    It also says that originally SQLite was a Tcl extension that “escaped into the wild.” Interesting; I know you’ve commented on Tcl before.

    1. Erbo says:

      I might also note that Java developers can take advantage of HSQLDB, which might be thought of as “SQLite in 100% pure Java.” This database is also used by some popular software including OpenOffice, Liferay, Jira, TeamCity, and so forth.

    2. I played around with TclTk ten or twelve years ago and much enjoyed it, especially the ease of creating flexible windowed UIs for its apps. I haven’t done much with it in years, but I’ve kept a couple of the books on the shelf in case I need to fool with TclTk code again.

  4. gaddi says:

    fwiw, I think SQLite doesn’t sport stored procedures. I’m (sort of) using it from MSEide (a Delphi lookalike)

  5. DENIS says:

    Take a look on a free tool — Valentina Studio. Amazing product! IMO this is the best manager for SQLite for all platforms. http://www.valentina-db.com/en/valentina-studio-overview

Leave a Reply to Jeff Duntemann Cancel reply

Your email address will not be published. Required fields are marked *