名表網(wǎng)站企業(yè)培訓(xùn)心得體會(huì)
//要在 C++ 中連接 SQL Server 數(shù)據(jù)庫,可以使用 Microsoft 提供的 SQL Server Native Client 或者 //ODBC 驅(qū)動(dòng)程序。以下是使用 SQL Server Native Client 連接數(shù)據(jù)庫的基本步驟:
//1. 安裝 SQL Server Native Client 驅(qū)動(dòng)程序。
//2. 在 C++ 代碼中包含頭文件 sqlncli.h。
//3. 使用 SQL Server Native Client 提供的 API 連接數(shù)據(jù)庫,例如:
//cpp
#include <windows.h>
#include <sqlncli.h>
int main()
{
? ? // 初始化 COM 庫
? ? CoInitialize(NULL);
? ? // 創(chuàng)建連接對象
? ? SQLHANDLE hConn;
? ? SQLAllocHandle(SQL_HANDLE_DBC, SQL_NULL_HANDLE, &hConn);
? ? // 連接數(shù)據(jù)庫
? ? SQLCHAR* szConnStr = (SQLCHAR*)"DRIVER={SQL Server Native Client 11.0};SERVER=127.0.0.1;DATABASE=TestDB;UID=sa;PWD=123456";
? ? SQLRETURN ret = SQLDriverConnectA(hConn, NULL, szConnStr, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
? ? if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO)
? ? {
? ? ? ? // 連接成功,執(zhí)行 SQL 查詢
? ? ? ? SQLHANDLE hStmt;
? ? ? ? SQLAllocHandle(SQL_HANDLE_STMT, hConn, &hStmt);
? ? ? ? SQLCHAR* szSql = (SQLCHAR*)"SELECT * FROM TestTable";
? ? ? ? SQLExecDirectA(hStmt, szSql, SQL_NTS);
? ? ? ? // 處理查詢結(jié)果
? ? ? ? SQLCHAR szName[256];
? ? ? ? SQLINTEGER nAge;
? ? ? ? while (SQLFetch(hStmt) == SQL_SUCCESS)
? ? ? ? {
? ? ? ? ? ? SQLGetData(hStmt, 1, SQL_C_CHAR, szName, sizeof(szName), NULL);
? ? ? ? ? ? SQLGetData(hStmt, 2, SQL_C_LONG, &nAge, sizeof(nAge), NULL);
? ? ? ? ? ? printf("Name: %s, Age: %d\n", szName, nAge);
? ? ? ? }
? ? ? ? // 釋放資源
? ? ? ? SQLFreeHandle(SQL_HANDLE_STMT, hStmt);
? ? }
? ? else
? ? {
? ? ? ? // 連接失敗,輸出錯(cuò)誤信息
? ? ? ? SQLCHAR szErrorMsg[SQL_MAX_MESSAGE_LENGTH];
? ? ? ? SQLSMALLINT nErrorMsgLen;
? ? ? ? SQLGetDiagRecA(SQL_HANDLE_DBC, hConn, 1, NULL, NULL, szErrorMsg, SQL_MAX_MESSAGE_LENGTH, &nErrorMsgLen);
? ? ? ? printf("Connect failed: %s\n", szErrorMsg);
? ? }
? ? // 斷開連接,釋放資源
? ? SQLDisconnect(hConn);
? ? SQLFreeHandle(SQL_HANDLE_DBC, hConn);
? ? // 釋放 COM 庫
? ? CoUninitialize();
? ? return 0;
}
//
//上述代碼中,使用 SQLDriverConnectA 函數(shù)連接數(shù)據(jù)庫,其中 szConnStr 參數(shù)指定連接字符串,
//包括驅(qū)動(dòng)程序名稱、服務(wù)器地址、數(shù)據(jù)庫名稱、用戶名和密碼等信息。連接成功后,
//使用 SQLExecDirectA 函數(shù)執(zhí)行 SQL 查詢,使用 SQLGetData 函數(shù)獲取查詢結(jié)果。
//最后,使用 SQLDisconnect 函數(shù)斷開連接,使用 SQLFreeHandle 函數(shù)釋放資源。
//需要注意的是,使用 SQL Server Native Client 連接數(shù)據(jù)庫需要先初始化 COM 庫,
//使用 CoInitialize 函數(shù)初始化,使用 CoUninitialize 函數(shù)釋放。
//另外,需要在連接字符串中指定正確的驅(qū)動(dòng)程序名稱和版本號,
//例如 "SQL Server Native Client 11.0" 表示 SQL Server 2012 版本的驅(qū)動(dòng)程序。