SQLAPI++ 是一個高性能 C++ 庫,封裝原生數據庫 API(非 ODBC/OLEDB 中間層),支持 Oracle、SQL Server、DB2、Sybase、Informix、InterBase、SQLBase、MySQL、PostgreSQL 等主流數據庫。本文展示核心 API 用法、編譯環境與實戰代碼模板。
www.sqlapi.com(提供評估版下載)www.szsmart.net),僅供學習研究#include <stdio.h> // printf
#include <SQLAPI.h> // SQLAPI++ 主頭文件
int main(int argc, char* argv[]) {
SAConnection con; // 連接對象
SACommand cmd(&con, // 命令對象,綁定連接
"SELECT fid, fvarchar20 FROM test_tbl"); // 測試查詢 SQL
try {
// === 1. 建立連接 ===
// 參數:數據源名、用戶、密碼、客戶端類型
// MySQL 使用 SA_MySQL_Client,Oracle 使用 SA_Oracle_Client
con.Connect("test", "tester", "tester", SA_Oracle_Client);
// === 2. 執行查詢 ===
cmd.Execute();
// === 3. 遍歷結果集 ===
while (cmd.FetchNext()) {
printf("Row fetched: fid=%ld, fvarchar20='%s'\n",
cmd.Field("fid").asLong(),
(const char*)cmd.Field("fvarchar20").asString());
}
// === 4. 提交事務 ===
con.Commit();
printf("Rows selected!\n");
}
catch (SAException &x) {
// === 5. 異常處理:回滾事務 ===
try {
con.Rollback();
}
catch (SAException &) {
// 忽略回滾異常
}
// 輸出錯誤信息
printf("Error: %s\n", (const char*)x.ErrText());
}
return 0;
}
| 類 | 核心方法 | 說明 |
|---|---|---|
SAConnection | Connect(), Commit(), Rollback(), Disconnect() | 連接生命周期管理 |
SACommand | Execute(), FetchNext(), Field(), setCommandText() | SQL 執行與結果集導航 |
SAException | ErrText(), ErrNativeCode() | 統一異常信息獲取 |
SAField | asLong(), asString(), asDouble(), isNull() | 字段值類型安全提取 |
SA_MySQL_Client / SA_Oracle_Client / SA_SQLServer_Client 等SQL 方言差異(如分頁、自增列、日期函數)仍需業務層適配,SQLAPI++ 不自動翻譯 SQL 語法。
SQLAPI/includeSQLAPI/lib(按編譯器/架構區分子目錄)sqlapi.lib (MSVC) / libsqlapi.a (GCC)