Friday, January 13 2006
I came to databases through the hand-holding world of Microsoft, with its wizards and graphical tools, some of which actually work fairly well, dulling the mind only as a side effect. Fearing the absence of such tools, or just the absence of unfettered access, several years ago I implemented a tool similar to Microsoft's Query Analyzer using ASP, and this allowed me to manage Microsoft SQL databases from web forms. My implementation was thorough, like the SQL 2000 version of Query Analyzer, permitting me to browse lists of tables and stored procedures visually. (You can look at the core functionality of that code here.)
For the past few days I've been working on a project for the client-of-a-client that implements a simulated SQL-like database using text files, all of which will eventually have to be administered. It's impossible to work with databases without having easy, flexible ways to enter data, so (after first establishing the underlying technology), I built a complete set of administrative tools. By the way, the underlying technology was an easy choice; I chose something called txtSQL, which does an amazingly-complete job of implementing a file-system-based SQL engine using PHP objects. As for my administrative tools, today I wrote a set of generic PHP functions that look at a SQL table's definition information and use that to create, on the fly, an editor form allowing a row of data to easily be entered. I think I'll be using these functions a lot, since they can easily be adapted to edit, say, the rows of a MySQL database. And with txtSQL, I have the added benefit of being able to tweak the core functionality of the parser, allowing me to modify the way tables are stored so that they can contain the meta-information necessary to implement truly-nuanced tools.
This evening I stayed up late building out the boiler room infrastructure in anticipation of the installation of the new homemade heat exchanger. I decided to support it on the wall above the circuit breaker box using a pair of shelving brackets.
For linking purposes this article's URL is:feedback
previous | next