nstcl is a Tcl package which reimplements many of the useful APIs and commands from AOLserver and OpenACS, making them available for use in Tcl/Tk applications & scripts. The current release is version 1.2 (5 August 2003).nstcl is grouped into a set of subpackages, including:- nstcl-core
- nstcl-database
- nstcl-html
- nstcl-http
- nstcl-misc
- nstcl-nssets
- nstcl-sendmail
- nstcl-templating
- nstcl-time
- Oracle
- Postgres
- Solid
- Sybase
- SQLite
- MySQL
- ODBC
AK -- I took a cursory look at the documentation and did not see any obvious place explaining which six procedures to implement for a new database. On the Tcl Chatroom we already had the question how to connect nstcl and Metakit.MC -- See the "Implementing a New Driver" section of the man page for load_driver. [3] The functions are:
- nstcl::database::${TYPE}::load_driver (does the package require or loads the .so)
- nstcl::database::${TYPE}::dbtype (returns a single string indicating what type of database, i.e. "Metakit")
- nstcl::database::${TYPE}::bindrow (create the ns_set that will contain the column names of the database columns returned by the query. The column values are populated with the call to getrow)
- nstcl::database::${TYPE}::close (close a connection to the database)
- nstcl::database::${TYPE}::exec (execute DDL/DML/query)
- nstcl::database::${TYPE}::flush (throws away any unretrieved pending results)
- nstcl::database::${TYPE}::gethandle (get a handle to the database)
- nstcl::database::${TYPE}::getrow (gets the next result in the result set from a prior query)
nstcl-core's ad_proc[4
] command makes handling optional switches to procs easy.See also http://michael.cleverly.com/nstcl/
, as well as Introduction to Database Access with nstcl.RLH 2005-11-16: Is nstcl still be maintained? I see from the site that 2002 was the last release. It seems with a little spit and polish this could be very nice indeed.escargo - SourceForge shows some CVS commits from 2 years ago, plus 5 open bugs. Nothing has changed recently.RLH Yes but I wonder if it has been "abandoned"...MC 2005-11-17: I'd classify it more as "mature" than "abandoned". Once Tcl 8.5 is out of alpha I plan on updating nstcl to use the various goodies that 8.5 provides (dicts, {*}, namespace ensembles, etc.).RLH Very cool...escargo 23 Oct 2006 - With Tcl 8.5 still a ways out, has there been any activity? I'm thinking that I might want to use this with Metakit to allow something to be unit tested with Metakit before being deployed with Oracle. (escargo 25 Nov 2006 - Or maybe with SQLite.)escargo 19 Oct 2012 - According to Tcl/Tk 8.5 Roadmap, Tcl 8.5 was released in 2007. Were any updates made to nstcl?
Silas - if you get the following error:
Connection to database failed
could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?Try something like (in nstcl::configure_pool):nstcl::configure_pool -immediately postgres $your_database 1 localhost:5432:$your_database
