From GNUstepWiki
Revision as of 20:21, 7 September 2021 by Marco (talk | contribs) (Version change.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Lightweight database abstraction layer.

Current Version: 1.8.1

  • Released: Nov 4, 2014
  • Licensed: LGPL


The SQLClient library is designed to provide a simple interface to SQL databases for GNUstep applications. It does not attempt the sort of abstraction provided by the much more sophisticated GDL2 library but rather allows applications to directly execute SQL queries and statements.

SQLClient provides for the Objective-C programmer much the same thing that JDBC provides for the Java programmer (though SQLClient is a bit faster, easier to use, and easier to add new database backends for than JDBC).


  • Simple API for executing queries and statements... a variable length sequence of comma separated strings and other objects (NSNumber, NSDate, NSData) are concatenated into a single SQL statement and executed.
  • Simple API for combining multiple SQL statements into a single transaction which can be used to minimise client-server interactions to get the best possible performance from your database.
  • Supports multiple simultaneous named connections to a database server in a thread-safe manner.
  • Supports multiple simultaneous connections to different database servers with backend driver bundles loaded for different database engines. Clear, simple subclassing of the abstract base class to enable easy implementation of new backend bundles.
  • Configuration for all connections held in one place and referenced by connection name for ease of configuration control. Changes via NSUserDefaults can even allow reconfiguration of client instances within a running application.
  • Thread safe operation... The base class supports locking such that a single instance can be shared between multiple threads.
  • Supports batching of statements into a single transaction to minimise client-server interaction overheads.
  • Has backends for PostgreSQL, MySQL, SQLite and JDBC (the latter allowing you to use any database for which JDBC drivers exist , but suffering from the performance overhead of going through Java).


Richard Frith-Macdonald

Related Links