c++ sqlsercer
时间: 2023-06-29 20:07:45 浏览: 50
C++ 是一种编程语言,而 SQL Server 是一种关系型数据库管理系统,两者可以结合使用来构建应用程序。下面是一个使用 C++ 和 SQL Server 进行数据库操作的示例:
```cpp
#include <iostream>
#include <sql.h>
#include <sqlext.h>
int main()
{
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
// 初始化环境句柄
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 初始化连接句柄
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLSetConnectAttr(hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5, 0);
SQLCHAR* conn_str = (SQLCHAR*)"DRIVER={SQL Server};SERVER=myServerName;DATABASE=myDatabaseName;UID=myUsername;PWD=myPassword;";
SQLRETURN ret = SQLDriverConnectA(hdbc, NULL, conn_str, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);
if (SQL_SUCCEEDED(ret)) {
std::cout << "Connected to SQL Server." << std::endl;
// 初始化语句句柄
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
// 执行查询语句
SQLCHAR* sql_query = (SQLCHAR*)"SELECT * FROM myTable";
retcode = SQLExecDirect(hstmt, sql_query, SQL_NTS);
if (SQL_SUCCEEDED(retcode)) {
// 处理查询结果
SQLLEN row_count;
SQLCHAR name[50];
SQLINTEGER age;
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(hstmt, 1, SQL_C_CHAR, name, 50, NULL);
SQLGetData(hstmt, 2, SQL_C_LONG, &age, 0, NULL);
std::cout << "Name: " << name << ", Age: " << age << std::endl;
}
}
// 释放语句句柄
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
}
else {
std::cerr << "Failed to connect to SQL Server." << std::endl;
}
// 释放连接句柄和环境句柄
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
```
在上面的示例中,我们使用了 SQL Server 的 ODBC 驱动程序来连接数据库,然后使用 SQLExecDirect 函数执行查询语句,并使用 SQLGetData 函数获取查询结果。最后,我们释放了连接句柄和环境句柄。