Home How To Online Documentation Support Download Order
 

 


Benefits
Examples
History
SQLAPI++ References
 

Quick download:

SQLAPI++ Win32

SQLAPI++ Linux

SQLAPI++ Sun SPARC Solaris







SQLAPI++ Library

SQLAPI++ is a C++ library for accessing multiple SQL databases (Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL, PostgreSQL and ODBC, SQLite). It uses native APIs of target DBMS so applications developed with SQLAPI++ library run swiftly and efficiently. The product also provides a low-level interface that allows developers to access database-specific features. By encapsulating a vendor's API, SQLAPI++ library acts as middleware and delivers database portability. See details on supporting SQL database servers on different platforms:

Server Win32 Linux/Unix
Oracle Database Server Supported (OCI) Supported (OCI)
Microsoft SQL Server Supported (DB-Library, OLE DB) FreeTDS ODBC driver should be used
Sybase Supported (Open Client, ASE & ASA) Supported (Open Client, ASE & ASA)
DB2 Supported (DB2 CLI) Supported (DB2 CLI)
Informix Supported (Informix CLI) Supported (Informix CLI)
InterBase/Firebird Supported Supported
Centura (formerly Gupta) SQLBase Supported (CAPI) Supported (CAPI)
MySQL Supported (MySQL C API)  Supported (MySQL C API)
PostgreSQL Supported (libpq) Supported (libpq)
ODBC Supported Supported (iODBC, see www.iodbc.org)
SQLite
Supported
Supported

Currently SQLAPI++ library supports the following C/C++ compilers:

  • Microsoft Visual C++
  • Borland C++ Builder
  • GNU project C and C++ compiler

Why use SQLAPI++?

  • SQLAPI++ directly calls native API's of target DBMSs (unlike ADO which uses OLEDB and/or ODBC intermediate layer). That's why SQLAPI++ is the fastest way to manage you data.
  • No need (vs ADO) to install and configure OLEDB and/or ODBC drivers when developing and distributing your applications.
  • Low-level interface that allows developers to access database-specific features.
  • SQLAPI++ ships with all the sources.
  • Free lifetime support, bugs fixing and new version updates.

Examples

Steps

Step 1. Connecting to database (and error handling)
Step 2. Executing a simple SQL command
Step 3. Binding input parameters
Step 4. Executing a select query (and fetching result set)
Step 5. Binding LongBinary, LongChar, BLob and CLob data
Step 6. Fetching LongBinary, LongChar, BLob and CLob data
Step 7. Multithreading support and canceling queries

Advanced Examples

Using Oracle REF CURSORs
Using Oracle nested cursors
Fetching records in bulk

History

2 July 2010

Version 3.7.32 of SQLAPI++ library released.

New features:

  • SQLite: Now (if "SQLiteDateValueType" = "DOUBLE") SQLAPI++ interprets a datetime value as a Julian Day JD double value (before we used SADateTime interpretation).
  • SQLite: Added "SQLiteDateValueType" option, SQLAPI++ uses "YYYY-MM-DD HH:MM:SS.SSS" formatted strings for date/time parameters by default.
  • SQLite: Changed "SQLiteDateTypes" option default value (now it's "DATE,DATETIME,TIME,TIMESTAMP").
  • MySQL: Fixed bug with the binding of zero-length blob- and byte- fields (thanks Taneli Otala).
  • Sybase: Connection options "SYBINTL.LIBS", "SYBCOMN.LIBS", "SYBTCL.LIBS", "SYBCT.LIBS", "SYBCS.LIBS" added.
  • General: Fixed problem with MacOS X and asctime_r function (thanks Michael Dickey).
  • General: More information provided if DBMS API loading fails.
  • General: 8-byte data length is allowed for SA_dtULong type.
  • SQLite: SA_STATIC_SQLITE build option added.
  • SQLite: The server/client version number is returned in common format now (hi- and low-word parts).
  • Oracle: SQLT_FLT binding type is used instead of SQLT_BDOUBLE even when it's supported by OCI.
  • General: SA_MANIFEST_EMB build option added.
24 March 2010

Version 3.7.31 of SQLAPI++ library released.

New features:

  • ODBC: Numeric data truncation bug fixed (thanks Gebert, Alfred).
  • SQLServer: OLEDB and ODBC, fixed bug with long/LOB data binding (thanks Thomas Häußermann).
  • SQLServer: OLEDB, added DBPROP_COMMITPRESERVE command parameter.
  • ODBC: fixed bug with long/LOB data binding.
  • Sybase: Bind ' ' character for empty procedure parameter strings (thanks Vlad Imshenetskiy).
  • General: Borland C++ 5.2 fixes.
10 February 2010

Version 3.7.30 of SQLAPI++ library released.

New features:

  • General: Added new methods - SAConnection::Reset() and SACommand::Reset().
  • PostgreSQL: Fixed memory leak when "UseCursor" option is set (thanks Vlad Romascanu).
  • Oracle: Fixed problem with OCI version 8.1.x and 9.0.x.
  • SQLServer: Fixed bug with unsigned 32-bit integer parameters (thanks Kyle Stock).
  • SQLServer: Fixed problem with [n]varchar|varbinary(max) output parameters (thanks Alfred Gebert).
  • SQLServer: Fixed bug with SAParam::setAsBool method (thanks Jacob Pedersen).
  • General: Performance improved (Christian Zink).
  • Sybase: Fixed bug in error handling (thanks Volodymyr Drobot).
  • MySQL: Fixed bug with UTF-8 client charcter set and BLob binding (Jason Tai).
  • SQLServer: Fixed SA_tdBool data binding (thanks Jacob Pedersen).
  • DB2: Fixed problem with prefetching on 64-bit platforms (thanks Cal Heldenbrand).
  • Oracle: Added experimental scrollable cursor support (thanks combit.net and Alexander Horak).
  • SQLServer: Added native (ODBC) API support.
  • PostgreSQL: Connection option "UseDLLonWin32" replaced by "LIBPQ.LIBS" (can define several library names).
  • ODBC: Connection option "UseManagerOnUNIX" replaced by "ODBC.LIBS" (also can define several library names).
  • MySQL: Connection option "MYSQL.LIBS" added (can define several library names).
  • Oracle: Connection option "OCI8.LIBS" added (can define several library names).
  • DB2: Connection option "DB2CLI.LIBS" added (can define several library names).
  • Informix: Connection option "INFCLI.LIBS" added (can define several library names).
  • SQLBase: Connection option "SQLBASE.LIBS" added (can define several library names).
  • SQLite: Connection option "SQLITE.LIBS" added (can define several library names).
  • InterBase: Connection option "ClientLibraryName" replaced by "IBASE.LIBS" (also can define several library names).
  • Sybase: Bind ' ' character for empty procedure parameter strings (thanks Vlad Imshenetskiy).
  • Sybase: SA_PARAM_USE_DEFAULT support added.
14 October 2009

Version 3.7.29 of SQLAPI++ library released.

New features:

  • General: Added Borland compilation option SA_MINDEP. Now dynamic RTL is used by default with bcc compiler.
  • DB2: Fixed bug with Unicode DB2 data type(vargraphic) interpretation.
  • General: Fixed Borland C++ SQLServer OLEDB compilation problem (sa_max() using instead of max()).
  • SQLite: Fixed bug at the text data conversion with Unicode configuration (thanks Holger Fischer).
  • SQLite: Added new SAConection option "SQLiteDateTypes" (thanks Jonathan Gonzalez Encarnacion).
  • SQLite: Fixed bug with SAConnection::setAutoCommit functionality (thanks Jonathan Gonzalez Encarnacion).
  • Oracle: Fixed temporary LOBs memory leak (thansk Marc Oliver R. Castaneda).
  • Sybase: Fixed 64-bit related INT type size bug (thanks Jon Linkins).
  • SQLite: Added declared type processing if there are no any rows at the result set (thanks Jonathan Gonzalez Encarnacion).
  • SQLServer: Fixed bug with "Execute_riid" option is set to "IID_IStream" (thanks Patrik Luscan).
  • MySQL: Fixed datetime and boolean type processing if statement API is used (thanks Christophe Benoit).
  • MySQL: Fixed bug with non-SELECt queries if statement API is used (thanks Christophe Benoit).
  • General: Fixed bug with SANumeric from string operator (thanks Christophe Benoit).
  • Firebird: Fixed 64-bit version (thanks evenreal.com).
  • Oracle: Fixed CLOB output parameter reading with ReadLob2 (thanks Gebert, Alfred).
  • Oracle: Fixed field and output parameter buffer size for multi-byte client character sets (thanks Gebert, Alfred).
27 May 2009

Version 3.7.28 of SQLAPI++ library released.

New features:

  • SQLServer: Added SAConnection OLEDB options "CompactEdition.3.0" and "CompactEdition.3.5" (thanks Johannes Maly).
  • SQLServer: Fixed processing of 'real' and 'tinyint' field types for SQLCE (thanks Jacob Pedersen).
  • General: Linux/Unix, added SQLAPI_SOLARIS compilation option and fixed pthread compilation problem (thanks Bogdan Pytlik).
  • SQLServer: OLEDB, fixed bug with empty second result set at the same scrollable SACommand (thanks Bjoern Eggstein).
  • General: Linux/Unix, added SQLAPI_SCOOSR5 compilation option (implemented for SCO OpenServer 5.0.7 by Andrew Thornton).
  • General: Linux/Unix, removed stabs+ debug information format specification (thanks Andrew Thornton).
  • MySQL: Fixed bug when it was impossible to process several result sets those a procedure returns (thanks Klass, Markus).
  • Oracle: Added a code that uses new OCILogRead2 when available (thanks Jeff Huttel).
  • MySQL: Fixed problem with prepared statements and different MYSQL_BIND versions (thanks Alexander Petrossian).
  • General: Several performance improvements (thanks Mike Moening).
  • MySQL: Fixed bug with SA_UNICODE_WITH_UTF8 and text fields when statement API used (thanks Jason at goffconcepts.com).
  • DB2: Fixed bug with text fields (UNICODE version).
  • General: For 'SACommand::Field(const SAString &sField)' added the second cycle for the field searching by short name (thanks Felix Nawothnig).
  • Sybase: Fixed long text field reading (SA_UNICODE).
  • Sybase: Added ability to define procedure parameters when the procedure name includes its number (ASE, like 'procedure1;1', thanks Vlad Imshenetskiy).
  • Sybase: Added method to detect server type (ASA or ASE) to avoid any extra internal exception processing (thanks Vlad Imshenetskiy).
  • SQLServer: Added 2008 OLEDB client support.
  • SQLServer: Added 2008 new data type support (thanks Justin Matthews).
  • SQLServer: Added fixes those allows to use "ICommandPrepare" = "skip" with procedures (without preparing there was string data truncation, thanks Justin Matthews).
  • MySQL: Added using 'KILL QUERY' command instead of mysql_kill with MySQL version >= 5.0 (thanks Andrew Thornton).
  • General: Documentation improved (thanks Justin Matthews and Kaarel Odraks).
  • Oracle: Fixed double values binding - using SQLT_BDOUBLE rather then SQLT_FLT (thanks Alan Hardin).
22 January 2009

Version 3.7.27 of SQLAPI++ library released.

New features:

  • General: Now 'SANumeric::operator double() const' again uses strtod() variant but with '.' replaced by localeconv()->decimal_point (thanks Alasdair Richardson).
  • General: 'SAGlobals::UnloadAPI() = true' behavior fixed (thanks Christophe Benoit).
  • MySQL: Fixed bug at ImyCursor::MySQLEscapeString(), if If a string is passed in that only contains escapable chars (thanks Oliver Watson).
  • SQLServer: Fixed bug with scrollable statement reusing that results in wrong result set processing (thanks Alexander Horak).
3 December 2008

Version 3.7.26 of SQLAPI++ library released.

New features:

  • ODBC: Now SA_dtNumeric SQLAPI++ type is used by default for SQL_NUMERIC, SQL_DECIMAL and SQL_BIGINT (before SA_dtDouble was there)..
  • ODBC: Added new option SAConnection option ODBCUseNumeric.
  • PostgreSQL: Added support for SA_UNICODE_WITH_UTF8 build option (experimental).
  • Sybase: sybAPI::DefaultLongMaxLength method added to control max 'long' field size (when the using of ct_get_data is impossible).
  • Sybase: SAGlobals::SetSybaseMessageCallback method renamed/moved to sybAPI::SetMessageCallback (still EXPERIMENTAL).
  • InterBase: Added ability to use new Firebird fb_interpret call instead of unsafe isc_interprete (thanks Diane Downie).
  • General: SQLAPI++ parameters and fields buffers allocation optimized (thanks Jeff Huttel).
  • Sybase: CS_LOCALE connection option added.
  • SQLServer: Fixed bug with numeric parameter presicion (truncation, thanks Jean-Claude Chauve).
  • PostgreSQL: Fixed bug with SAParam::setAsULong (thanks Vlad Romascanu).
  • Sybase: Added 'date' type support for the stored procedure parameters (thanks Vlad Imshenetskiy).
  • Sybase: Fixed problem with the procedure parameters describing when procedure is located in another database (Georgiy Pakhutin).
  • ODBC: Added new connection options - SQL_DRIVER_PROMPT,SQL_DRIVER_COMPLETE,SQL_DRIVER_COMPLETE_REQUIRED,DSN.
  • SQLServer: Fixed bug with procedure preparation.
12 September 2008

Version 3.7.25 of SQLAPI++ library released.

New features:

  • General: saConnectionHandler_t callback added at SAConnection::Connect method.
  • SQLServer: SQLCE, "CreateDatabase" option added.
  • SQLServer: SQLCE, use SA_dtString program type for uniqueidentifier fields.
  • Oracle: Fixed memory leak when SYS_REFCURSOR parameters returns a cursor field (thanks mera.ru)
  • General: Added compilation option SA_UNICODE_WITH_UTF8. Used with MySQL to turn on utf-8 client character set for SA_UNICODE configuration.
  • General: SA_UNICODE configuration. Added SAString methods GetUTF8Chars, GetUTF8CharsLength, SetUTF8Chars.
  • Oracle: Fixed option processing OCI_ATTR_CHARSET_FORM=SQLCS_NCHAR for NCLOB binding (thanks Andreas Wenzel).
  • Oracle: Fixed binding(SA_UNICODE) CLOB procedure parameters (thanks Marcel Rassinger).
  • General: Fixed 'SANumeric::operator double() const' bug with locale settings those use a special character as a decimal delimiter instead of '.'.
  • SQLite: Added new API functions - sqlite3_threadsafe and sqlite3_last_insert_rowid.
  • SQLite: Fixed wrong API initialization (thanks Peter Klotz).
  • SQLite: Added "BusyTimeout" connection option.
  • General: Added version info into sqlapi.dll (thanks Frank Hilliger).
  • Sybase: SACommand::Cancel should work now (thanks Georgiy Pakhutin).
  • SQLServer: OLEDB, SACommand::Cancel works with multiple results (required SQLNCLI, thanks Georgiy Pakhutin).
  • SQLServer: OLEDB, the default value of "ICommadPrepare" option was changed to "skip".
  • Sybase: "SybaseResultType" and "SybaseResultCount" SACommand options added.
  • Sybase: SAGlobals::SetSybaseMessageCallback method added (EXPERIMENTAL, allows to process Sybase messages manually).
  • DB2: Added mapping DECFLOAT<->SA_dtString(thanks Dmitry Chaikovsky).
26 February 2008

Version 3.7.24 of SQLAPI++ library released.

New features:

  • MySQL: Connection options MYSQL_OPT_READ_TIMEOUT, MYSQL_OPT_WRITE_TIMEOUT and MYSQL_OPT_CONNECT_TIMEOUT added.
  • MySQL: Version 5.1 supported now.
  • Oracle: CLOB/BLOB truncation bug fixed.
  • Oracle: REFCURSOR memory leak problem fixed.
  • SQLite: Initial support for SQLite added.
  • ODBC: Added the special code for situations when the ODBC driver returns 0 bytes instead of SQL_NO_DATA (LongChar reading, thanks Frank Hilliger).
  • SQLServer: SQLOLEDB layer modified for Compact Edition 3.5.
  • SQLServer: Added Compact Edition specific options. Now CE layer is available at UNICODE version only.
  • DB2: Fixed the problem with column names (UNICODE version, thanks Adrian Studer).
  • General: Fixed the problem with the SANumeric rounding (thanks Mike Moening).
  • MySQL: Added SAInterval parameter processing (thanks Frank Hilliger).

See Full History...


Last modified: 2 July 2010
webmaster@sqlapi.com