|
|
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 |
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.) |
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
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.
|
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).
|
See Full History...
Last modified: 4 November 2011
webmaster@
|