使用C語言在Windows使用ODBC連接達夢數據庫
要求:在Windows上配置好ODBC
編譯工具:devc++
在dev工具中找到工具à編譯選項à編譯器
在框中填寫-lodbc32
#include <stdio.h> #include <windows.h> #include <sql.h> #include <sqltypes.h> #include <sqlext.h>
/* 檢測返回代碼是否為成功標志,當為成功標志返回 TRUE,否則返回 FALSE */ #define RC_SUCCESSFUL(rc) ((rc) == SQL_SUCCESS || (rc) == SQL_SUCCESS_WITH_INFO) /* 檢測返回代碼是否為失敗標志,當為失敗標志返回 TRUE,否則返回 FALSE */ #define RC_NOTSUCCESSFUL(rc) (!(RC_SUCCESSFUL(rc)))
HENV henv;/* 環境句柄 */ HDBC hdbc;/* 連接句柄 */ HSTMT hsmt;/* 語句句柄 */ SQLRETURN sret; /* 返回代碼 */
int main(void) { /* 申請一個環境句柄 */ SQLAllocHandle(SQL_HANDLE_ENV, NULL, &henv); /* 設置環境句柄的 ODBC 版本 */ SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER); /* 申請一個連接句柄 */ SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
sret = SQLConnect(hdbc, (SQLCHAR *)"DM8_ODBC", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS, (SQLCHAR *)"SYSDBA", SQL_NTS); if (RC_NOTSUCCESSFUL(sret)) { /* 連接數據源失敗! */ printf("odbc: fail to connect to server!\n"); SQLFreeHandle(SQL_HANDLE_DBC, hdbc); SQLFreeHandle(SQL_HANDLE_ENV, henv); exit(0); } printf("odbc: connect to server success!\n"); SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hsmt); // 插入數據 sret = SQLExecDirect(hsmt, (SQLCHAR *) "insert into SYSDBA.T1 VALUES(1,'A','K','G');", SQL_NTS); if (RC_NOTSUCCESSFUL(sret)) { printf("odbc: insert fail\n"); } else printf("odbc: insert success\n");
/* 斷開與數據源之間的連接 */ SQLDisconnect(hdbc); /* 釋放連接句柄 */ SQLFreeHandle(SQL_HANDLE_DBC, hdbc); /* 釋放環境句柄 */ SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; } |