在企業級應用開發中,Informix 資料庫以其高效能與穩定性廣受青睞。本文提供一個完整的 Informix ESQL/C 實作範例,涵蓋資料庫連線、查詢、斷線等核心操作,並包含編譯腳本與動態庫建立教學,適合需要快速上手嵌入式 SQL 開發的工程師參考。
主程式包含三個關鍵函式:
connectDB():透過環境變數 WORKDBS 取得資料庫名稱,建立連線selectDB():執行簡單的 SELECT * FROM TEMP_TABLE WHERE column1 = 'test' 查詢disconnectDB():正確斷開資料庫連線所有函式均採用 EXEC SQL WHENEVER SQLERROR GOTO error 錯誤處理機制,確保異常時能記錄 sqlca.sqlcode 並優雅退出。
簡潔的呼叫流程:
int main() {
connectDB();
selectDB();
disconnectDB();
return 0;
}
定義 INFORMIXDIR、編譯旗標 CFLAGS 與連結庫 INFOLIBS,使用 esql 預編譯 .ec 檔案:
INFORMIXDIR = /infx64
CFLAGS = -g -w
INFOLIBS = -L$(INFORMIXDIR)/lib -lifasf \
-L$(INFORMIXDIR)/lib/esql -lifsql -lgen -lgls -lifgen -lthgen -los -ltli -lm
all: dbconn.o test.o
cc $(CFLAGS) test.o dbconn.o -o $@ $(INFOLIBS)
dbconn.o: dbconn.ec
esql -c dbconn.ec
進階範例展示如何將連線函式編譯為共享庫 libconnect.so 與靜態庫 libconnect.a,包含 nm、awk 處理匯出符號表,以及 cc -bnoentry -bM:SRE 等 AIX 專屬連結選項。
WORKDBS 環境變數提供,便於部署環境切換sqlca.sqlcode 回報詳細錯誤碼esql -c 將 .ec 轉為 .c 再編譯,掌握此流程可避免常見建置錯誤實際專案中建議:
PREPARE/DECLARE CURSOR 處理複雜查詢完整程式碼與 Makefile 已整合於本文,可直接作為專案起始模板使用。