|
|
|
SQLAPI++ Library
SQLAPI++ is a C++ library for accessing multiple SQL databases
(Oracle, SQL Server, DB2, Sybase, Informix, InterBase, SQLBase, MySQL,
PostgreSQL, SQLite 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 (ODBC, OLE DB, DB-Library) |
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 |
Supported (MySQL C API) |
Supported (MySQL C API) |
| PostgreSQL |
Supported (libpq) |
Supported (libpq) |
| ODBC |
Supported |
Supported (iODBC, unixODBC) |
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
| 24 May 2013 |
|
Version 4.1.1 of SQLAPI++ library released.
New features:
- General: SAString method GetUTF16Chars, GetUTF16CharsLength, SetUTF16Chars available in not-Unicode version.
- SQLServer: Added support for Microsoft ODBC Driver 11 for SQL Server on Linux.
- Informix: Fixed bug with data type conversion (thanks Jay Sridhar).
- InterBase: Fixed the 64-bit DLL name (thanks Junior Tcheho).
- SQLServer: Fixed problem with binding result set fields after any long/LOB one.
- General: Fixed ODBC/CLI scrollable cursor fetching with row prefetched > 1 (DB2, Informix, ODBC, MSSQL affected).
- Oracle: Added "NLS_CHAR" connection option.
- PostgreSQL: Fixed long binary/blob binding (thanks Yan Dai).
- General: Fixed 'SANumeric::operator sa_uint64_t()' for Windows (thanks Junior Tcheho).
- DB2: Removed assertion when SQLGetDescRec is not exported by DB2 ODBC/CLI library (thanks Jesús Malo Poyatos).
- DB2: Added workaround for incorrect 64-bit SQLDescribeCol (thanks Jesús Malo Poyatos).
- General: Added 'SetCursorName' SACommand option for ODBC/CLI API-s
that uses SQLSetCursorName function (thanks Christian Schmitz).
|
| 20 December 2012 |
|
Version 4.0.3 of SQLAPI++ library released.
New features:
- Informix: Added Unicode support.
- SQLServer: Use ODBC API by default instead of OLEDB, ODBC client allowed with MinGw.
- General: Fixed bug with dummy data converter that can produce LOB/Long data reading problems (thanks Peter Klotz).
- SQLite: Start transaction indirectly before the first query executed (thanks Frank Hilliger).
- Sybase: Added 15.7 context support.
- DB2: Fixed LOB/LONG field reading (thanks Fernand Alcatrao).
- SQLServer: ODBC API, fixed bug with connection string parsing (thanks Hide Ishikuri).
- Sybase: Don't using read only cursor by default (thanks Ian Hodgkinson).
- DB2: Use trusted connection when username is empty.
- General: Fixed procedure parameters binding (thanks Joel Baby Jose).
- ODBC: Added Unicode support for Linux/Unix.
- SQLite: Added #ifdef-#endif for static sqlite3_table_column_metadata (thanks Jesus Malo Poyatos).
- PostgreSQL: Added PQping/PQpingParams API functions.
- PostgreSQL: Fixed connection code bug when application name specified (thanks Alexander Horak).
- SQLite: Fixed problem with string data conversion in Unicode version (thanks Jacob Pedersen).
|
| 29 October 2012 |
|
Version 4.0.2 of SQLAPI++ library released.
New features:
- General: Fixed SAString binary length calculation (thanks Christian Schmitz).
- PostgreSQL: Added support for executing PostgreSQL function.
- General: Bind variable can start with '_' and comment processing
added ('--' until end-of-line and /* .. */, thanks Georgiy Pakhutin).
- PostgreSQL: Added processing for PQsetdbLogin pgoptions parameter passed with the connection string.
- SQLServer: Added DBPROP_SSCE_DBCASESENSITIVE connection optioon for CompactEdition (thanks Jacob Pedersen).
- ODBC: Binary field Interpreted as a long binary if the column size is 0 (thanks Scott at touchnet).
- DB2: Added Unicode support for Linux/Unix (thanks Jonathan González Encarnación).
- Sybase: Added timeout message processing into callback function (CS_TIMEOUT works now, thanks Michael Graf).
- SQLServer: Added SSPROP_INIT_TRUST_SERVER_CERTIFICATE OLEDB connection option.
- SQLite: Added sqlite3_table_column_metadata API fuinction.
- MySQL: Added function support.
- General: Fixed using wcscasecmp for MacOS X (thanks Christian Schmitz).
- MySQL: Fixed procedure/function parameters parsing (thanks icqwjj).
- InterBase: Fixed query preparing and executing with national symbols, Unicode version (thanks Petr Liska).
- SQLServer: Fixed IssNCliCursor::ConvertString and IssOleDbCursor::ConvertString virtual methods(thanks Petr Liska).
- Sybase: Fixed IsybCursor::ConvertString virtual method.
- InterBase: Fixed IibCursor::ConvertString virtual method.
- SQLite: Fixed SACommand::isResultSet always returns true.
- General: Fixed SAString::SetUTF16Chars method (avoid crash when the source string is NULL).
- General: Avoided double conversion of UTF-8 and UTF-16 data (SA_STRING_EXT required, thanks Christian Schmitz).
- General: Fixed UTF-16 code (wrong conversion).
- General: SONAME added for the shared library (thanks Pobinger Gerhard Stefan).
|
| 1 June 2012 |
|
Version 4.0.1 of SQLAPI++ library released.
New features:
- General: SA_MINDEP build option replaced with SA_RUNTIME=(dynamic|static).
- MySQL: Fixed VARCHAR field data truncation with statement API (thanks Abhay Rawat).
- Oracle: Fixed NCLOB/NCHAR/NVARCHAR reading for UTF16 encoding.
- General: Unicode Linux/Unix configuration is supported now (except ODBC).
- General: Certain SAString methods return SIZE_MAX now instead of (-1).
- General: Changed all internal buffer size types for size_t.
- PostgreSQL: Fixed time string parsing(thanks Andrew Smolko).
- PostgreSQL: Fixed string escaping.
- ODBC: Fixed SQLDriverConnect related bug (thanks Mike Moening).
- SQLite: Added backup API functions (thanks Dave Fileccia).
- General: SADateTime default constructor is public again.
- General: SAValueRead::asInterval() method substracts SADateTime(0.0) from SA_dtDateTime value instead of the current time.
- SQLite: Added "SQLiteTransactionType" connection option (thanks Frank Hilliger).
- SQLServer: Ready for SQL Server 2012 Native Client.
- Oracle: Function returned value parameter name changed from "Result" to "RETURN_VALUE".
|
| 4 November 2011 |
|
Version 3.8.3 of SQLAPI++ library released.
New features:
- PostgreSQL: Added support for PQfformat API function.
- Sybase: Added SA_SYBASE_LARGE_IDENTIFIERS build option (CS_NO_LARGE_IDENTIFIERS uses by default).
- Sybase: Added CS_SYB_CHARSET connection option (thanks Leonid O Volkov).
- PostgreSQL: Added SA_RepeatableRead isolation level support (actual for PG 9.1, thanks Andrew Smolko).
- PostgreSQL: Fixed binary values escaping (thanks combit.net and Bjoern Eggstein).
- MySQL: Fixed API mysql_ssl_set_t for the modern parameter set (thanks Robert Osada).
- General: Fixed SACommand::ParseInputMarkers method (thanks Michael Gandlin).
- SQLite: Bind SA_dtUlong parameter as 64-bit integer instead of int (thanks Derick Naef).
- General: Align the default buffer length for long/LOB data to sizeof(SAChar) (thanks Emir Subasic).
- DB2: Fixed bug with binding an empty LOB (thanks Martin Rötzl).
- SQLServer: ODBC, fixed empty LOBs binding and reading.
- Informix: Fixed empty LOBs binding and reading.
- ODBC: Fixed empty LOBs binding and reading.
- Oracle: Fixed bug with PL/SQL functions return boolean (thanks Andrew Simmons).
|
| 22 June 2011 |
|
Version 3.8.2 of SQLAPI++ library released.
New features:
- MySQL: Fixed the field describing bug (thanks Brad DeJong).
- General: General: samisc.h header moved into general include folder (SAMutex, SACriticalSectionScope classes).
- General: Added SA_ODBC_INCLUDES build option.
- ODBC: Fixed name buffer length for SQLDescribeCol API function.
- ODBC: Added the catalog name into ODBC and MSSQL(ODBC) DescribeParamSP method.
- General: Use neutral value of 'struct tm' DST flag (SADateTime class).
- General: Use ISO format (YYYY-MM-DDTHH:MI:SS) for SA_dtDateTime values at SAValueRead::asString method.
- Informix: Fixed Informix SAconnection::isAlive.
- Informix: Fixed SACommand::isResultSet.
- General: Fixed SACommand::Destroy.
- Oracle: Fixed bug with package method executing that should be resolved by synonym (thanks Michael Lyle).
- Interbase: Fixed SACommand::isResultSet.
- Interbase: Implemented SA_UNICODE_WITH_UTF8 option.
- Sybase: Fixed SA_UNICODE_WITH_UTF8 option implementation.
- General: SADateTime::SADateTime() constructor is private now.
- General: Added SAGlobals::StringToClient and SAGlobals::ClientToString methods.
- General: Fixed Borland C++ build files.
- General: Added SA_STATIC_SYBASE build option.
|
| 20 February 2011 |
|
Version 3.8.1 of SQLAPI++ library released.
New features:
- General: Removed SA_SCROLLABLE_CURSOR build option, this features is always available now.
- DB2: Added scrollable cursor support.
- Informix: Added scrollable cursor support.
- SQLBase: Added scrollable cursor support.
- Sybase: Added scrollable cursor support.
- General: Removed SA_UNICODE_WITH_UTF8 build option, this features is always turned on now.
- PostgreSQL: Fixed bug with the application name parameter (thanks Bjoern Eggstein).
- General: Added conversion from numeric value into SAValueRead::asBool method.
- SQLServer: OLEDB, added support for Compact Edition 4.0 (thanks Jacob Pedersen).
- MySQL: Now SAField::FieldSize methods returns the 'character'
length for character fields (thanks Jonathan González Encarnación).
|
| 26 January 2011 |
|
Version 3.7.35 of SQLAPI++ library released.
New features:
- Oracle: Fixed LOB reading with OCI 10 and above (thansk Anca Elena Arhip).
|
| 23 January 2011 |
|
Version 3.7.34 of SQLAPI++ library released.
New features:
- SQLServer: OLEDB, fixed the memory leak at 'Check' function (SAExecption throwing, thanks Michael Soliman).
- SQLServer: OLEDB, removed assertion for SQLServer 2008 date and time types.
- ODBC: FreeTDS, fixed the bug with missing first character of the long text/string data.
- SQLite: sqlite3_open_v2() support, the statement is closed when there is no result or an error occurs (thanks Mario Degenhardt).
- MySQL: Added CLIENT_REMEMBER_OPTIONS and MYSQL_OPT_RECONNECT connection options (thanks Steven Van Ingelgem).
- PostgreSQL: Added "APPNAME" connection option (version 9.x and above).
- Sybase: Added correct description of the output procedure parameters (ASE version >= 12.5, thanks Georgiy Pakhutin).
- General: Fixed bug with SAValueRead::asBool() on BigEndian platforms (thansk Vlad Romascanu).
- PostgreSQL: Added 'E' prefix for binary sequnces passed to server version 8.2.4 and above.
- MySQL: Fixed again binding of the binary data (thanks Martin Herb).
|
| 31 August 2010 |
|
Version 3.7.33 of SQLAPI++ library released.
New features:
- SQLServer: OLEDB, fixed parameter date type name for ICommandWithParameters::SetParameterInfo (thanks Michael Soliman).
- General: SACommand::Param(int) method performance improved.
- MySQL: Fixed binding of the binary data (thanks Martin Herb).
- MySQL: Fixed the error processing when mysql_fetch_row returns NULL (thanks Michael Graf).
- Sybase: Added 15.5 context support.
- Sybase: Added SA_UNICODE_WITH_UTF8 build option support (EXPERIMENTAL).
- MySQL: Added scrollable cursor support (EXPERIMENTAL).
- General: Added SA_32BIT build option (Linux/Unix g++ build files).
- ODBC: 2-byte buffer used with SQLGetData (getting the long field size, thanks David Stewart).
- General: SA_STRING_EXT build option added (string buffer allocation optimization, thanks iontrading.com).
- Sybase: Fix for 64-bit DLL names under Windows (thanks iontrading.com).
- ODBC: Set SQL_ATTR_ODBC_CURSORS later to avoid crash when using iODBC (thanks iontrading.com).
- General: Use C runtime routines at SAString::CompareNoCase (thanks iontrading.com).
|
| 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.
|
See Full History...
Last modified: 24 May 2013
webmaster@sqlapi.com
|