Home How To Online Documentation Support Download Order
 

 

Benefits
Examples
History
SQLAPI++ References
 

Quick download:

SQLAPI++ Windows

SQLAPI++ Linux

SQLAPI++ Mac OS X

SQLAPI++ FreeBSD

SQLAPI++ Solaris x86

SQLAPI++ Solaris SPARC







SQLAPI++ Library

SQLAPI++ is a C++ library for accessing multiple SQL databases (Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL, PostgreSQL, SQLite, SQL Anywhere and ODBC). 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 Windows Linux/Unix
Oracle Database Server Supported (OCI) Supported (OCI)
Microsoft SQL Server Supported (SQLNCLI/ODBC, OLE DB, DB-Library) SQLNCLI/ODBC for Linux x86-64, otherwise ODBC driver and connection should be used (FreeTDS, Easysoft,...)
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
SQLBase Supported (CAPI) Supported (CAPI)
MySQL, MariaDB Supported (MySQL C API)  Supported (MySQL C API)
PostgreSQL Supported (libpq) Supported (libpq)
ODBC Supported Supported (iODBC, unixODBC)
SQLite
Supported
Supported
Sybase SQL Anywhere
Supported (SQL Anywhere C API)
Supported (SQL Anywhere C API)

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

  • Microsoft Visual C++
  • Embarcadero (Borland) C++
  • GNU GCC C++ compiler
  • Solaris Studio 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

14 April 2017

Version 4.1.11 of SQLAPI++ library released.

New features:

  • General: Fixed bug with ODBC/CLI API and multiresult statement field binding (thanks Raymond Allen).
  • General: Added build fiels for IBM xlC compiler, fixed DBMS lib names for AIX (thanks Ralph Dagdag).
  • SQLServer(ODBC): Fixed problem with incorrect driver version number reported by sqlsrv32.dll (thanks Matt Fisher).
  • Informix: Added support for "PreFetchRows" option.
  • ODBC, DB2, Informix, SQLServer(ODBC): added "ExecDirect" SACommand option (use SQLExecDirect instead of SQLExecute).
  • ODBC: fixed SQL_ATTR_ROWS_FETCHED_PTR attribute setup bug (thanks Ivano Cassis).
  • PostgreSQL: Added "SetCursorName" command option.
  • SQLServer (ODBC): Added support for Microsoft ODBC Driver 13 for SQL Server.
  • ODBC: Fixed long text data length detection for Unicode variant (thanks Bjoern Eggstein).
  • SQL Anywhere: Fixed bug with procedure/function parameters parsing (thanks Trent Bowman).
  • General: Fixed UTF-8 mode of SAMultibyte2UnicodeConverter (thanks Emma Qin)
  • General: Fixed quoted parameter name parsing (like :"my param", thanks Vyacheslav E.)
  • InterBase: Fixed UTF-8 character set name (thanks Maria Harmon).
4 October 2016

Version 4.1.10 of SQLAPI++ library released.

New features:

  • General: Fixed SAInterval internals.
  • MySQL: Fixed statement API SA_dtInteral binding (thanks Sophia Wang).
  • SQL Anywhere: Fixed bug with prepared statement execution (thanks Brad Blankenburg).
  • SQLite: Added sqlite3_load_extension and sqlite3_free API functions.
  • Sybase: Added CS_SEC_ENCRYPTION, CS_SEC_EXTENDED_ENCRYPTION, CS_SEC_NON_ENCRYPTION_RETRY connection options.
  • MySQL: Fixed bug with the first SACommand::FetchPrior() call (thanks Dave Sulentic).
  • PostgreSQL: Ignore unknown date/time formats (thanks Maria Harmon).
  • MySQL: For multi-thread version try to load also MYSQL client lirary name without "_r" suffix (thanks Michael Noe).
  • General: Added SA_STATIC_PGSQL build option.
  • MySQL: Added MYSQL_SHARED_MEMORY_BASE_NAME connection option.
4 May 2016

Version 4.1.9 of SQLAPI++ library released.

New features:

  • Oracle: Fixed bug with CLOB reading and using multi-byte client encoding (thanks Peter Klotz).
27 April 2016

Version 4.1.8 of SQLAPI++ library released.

New features:

  • Sybase: Fixed bug with ASE 16.x version detection (thanks Frank Hilliger).
  • General: Fixed utf8.c code for correct results with and without output buffer, Unicode 3.0 standards (thanks Peter Klotz).
  • General: Fixed SAComand::Field(index) throws SAException when index is wrong (Christian Schmitz).
  • PostgreSQL: fixed using "APPNAME" connection option when connection string dbname already includes other options.
  • Oracle: try to get the LOB size before read.
  • General: added missed 'SAValueRead::operator SANumeric() const' body (thanks Balázs Kádár).
  • General: fixed SIZE_MAX definition bug (thanks Peter Klotz).
  • General: Fixed the SAString::SetUTF16Chars method for correct new []/delete [] (thanks Matt Feemster).
23 December 2015

Version 4.1.7 of SQLAPI++ library released.

New features:

  • General: Fixed the query text comments parsing (thanks Georgiy Pakhutin).
  • SQLServer(OLEDB): Fixed zero-scale numeric reading for SQLCE (thanks Gerardo Goitiandia)
  • Oracle: fixed INTERVAL data reading (thanks Leo Namuco).
  • SQLite: fixed binding 64-bit integer parameters (thanks Balázs Kádár).
  • MySQL: ignore missed myodbc_remove_escape.
24 October 2015

Version 4.1.6 of SQLAPI++ library released.

New features:

  • ODBC: added ODBCAddLongTextBufferSpace command option (thanks Christian Schmitz).
  • PostgreSQL: fixed function parameters reading.
  • SQLite: added sqlite3_key and sqlite3_rekey API functions (thanks Christian Schmitz).
  • Oracle: connection pool support (EXPERIMENTAL).
  • SQLServer(ODBC): Fixed LOB output procedure parameter reading.
  • Informix: Ignore unknown data types (set field value to NULL).
  • DB2: Ignore unknown data types (set field value to NULL).
  • SQLBase: Ignore unknown data types (set field value to NULL).
  • ODBC: Ignore unknown data types (set field value to NULL).
  • General: Use specific internal SQLAPI library error native codes.
  • Oracle: Added OCI_ATTR_PREFETCH_ROWS and OCI_ATTR_PREFETCH_MEMORY options.
  • General: Added SAException& SAException::operator=(const SAException &other) (thanks Georgiy Pakhutin).
  • MySQL: Added ability to use named pipes connection.
  • DB2: Fixed bug with LONG/LOB 'NULL' field detection on 64-bit platfroms (thanks Frank Hilliger, also fixed for Informix, ODBC and SQLServer/ODBC).
5 May 2015

Version 4.1.5 of SQLAPI++ library released.

New features:

  • Oracle: Added OCI_ATTR_RECEIVE_TIMEOUT, OCI_ATTR_SEND_TIMEOUT conection options.
  • SQLServer(ODBC): Fixed datetime parameter precision issue (thanks Balázs Kádár).
  • PostgreSQL: Fixed SADateTime to internal format conversion at 64-bit (thanks Stefan Csomor).
  • General: Support for MinGW64.
  • InterBase: Fixed LOB reading/writing bug (thanks Pascal Geenens).
  • Oracle: Added ora8ExternalConnection class (thanks Frank Hilliger).
  • General: Fixed SAException constructor for correct nested exception copying (thanks Martin Rötzl).
  • MySQL: Added microseconds support (thanks Javier Cuevas Domingo).
  • General: Added SACommand::FetchPos method (EXPERIMENTAL).
  • Oracle: Added timezone support with SADateTime (thanks Frank Hilliger).
  • General: Added timezone information into SADateTime class (thanks Frank Hilliger).
  • Oracle: Fixed Long/LOB reading issues at multi-threading applications (thanks Niklas Bergh).
  • ODBC: Fixed the error message/code assigning for some drivers (thanks Christian Schmit).
  • SQLite: Fixed the error processing issue at multi-threading applications (thanks Niklas Bergh).
  • Mysql: Added connection option "SkipServerInit" (thanks Pierre-Yves Thomas).
  • SQLite: Added sqlite3_enable_load_extension API function.

See Full History...


Last modified: 14 April 2017
webmaster@sqlapi.com