在異構數據庫環境下開發,傳統方案面臨 ODBC/OLEDB 中間層性能損耗、驅動配置繁瑣、代碼移植困難等痛點。SQLAPI++ 直接調用各數據庫原生客戶端 API(Oracle OCI、SQL Server DB-Library、MySQL C API 等),扮演輕量級中間件角色,實現:
#include <stdio.h>
#include <SQLAPI.h>
int main() {
SAConnection con; // 1. 連接對象
SACommand cmd(&con, "SELECT fid, fvarchar20 FROM test_tbl"); // 2. 命令對象
try {
con.Connect("test", "tester", "tester", SA_Oracle_Client); // 3. 連接 Oracle
cmd.Execute(); // 4. 執行查詢
while (cmd.FetchNext()) { // 5. 遍歷結果集
printf("Row: fid=%ld, fvarchar20='%s'\n",
cmd.Field("fid").asLong(),
(const char*)cmd.Field("fvarchar20").asString());
}
con.Commit();
printf("Query succeeded!\n");
}
catch (SAException &x) {
con.Rollback();
printf("Error: %s\n", (const char*)x.ErrText());
}
return 0;
}
| 核心類 | 職責 |
|---|---|
SAConnection | 管理數據庫連接、事務提交/回滾 |
SACommand | 封裝 SQL 語句、參數綁定、結果集導航 |
SAException | 統一異常處理,提供 ErrText() 獲取詳細錯誤信息 |
異常處理採用 RAII 模式:catch 塊中先 Rollback() 再輸出錯誤,確保事務一致性。
官網 www.sqlapi.com 提供評估版,連接成功後會彈出 MessageBox。作者提供 BCB 版破解下載(www.szsmart.net),僅供學習研究,商業用途請購買正版授權。
現代 C++ 專案建議優先考慮 ODBC 標準接口 或 soci / cpp-db 等開源庫,避免廠商鎖定。但維護舊系統或需極致性能時,SQLAPI++ 仍是優秀選擇。