VS2022使用ODBC连接sql serverC++代码
时间: 2023-10-11 12:06:47 浏览: 218
C/C++使用ODBC连接SQL server数据库完整流程
4星 · 用户满意度95%
以下是在 Visual Studio 2022 中使用 ODBC 连接 SQL Server 数据库的示例 C++ 代码:
```cpp
#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
using namespace std;
int main()
{
// 设置连接字符串
SQLCHAR* connectionString = (SQLCHAR*)"Driver={SQL Server};Server=SERVER_NAME;Database=DATABASE_NAME;Uid=USERNAME;Pwd=PASSWORD;";
// 声明句柄和变量
SQLHENV environmentHandle;
SQLHDBC connectionHandle;
SQLHSTMT statementHandle;
SQLRETURN retcode;
// 初始化环境句柄
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &environmentHandle);
SQLSetEnvAttr(environmentHandle, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
// 初始化连接句柄
SQLAllocHandle(SQL_HANDLE_DBC, environmentHandle, &connectionHandle);
// 连接数据库
retcode = SQLDriverConnect(connectionHandle, NULL, connectionString, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// 创建语句句柄
SQLAllocHandle(SQL_HANDLE_STMT, connectionHandle, &statementHandle);
// 执行 SQL 查询
SQLCHAR* sql = (SQLCHAR*)"SELECT * FROM TABLE_NAME";
retcode = SQLExecDirect(statementHandle, sql, SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)
{
// 获取结果集中的数据
SQLCHAR columnData[256];
SQLLEN indicator;
while (SQLFetch(statementHandle) == SQL_SUCCESS)
{
SQLGetData(statementHandle, 1, SQL_C_CHAR, columnData, sizeof(columnData), &indicator);
cout << columnData << endl;
}
}
else
{
cout << "SQL error: " << retcode << endl;
}
// 释放语句句柄
SQLFreeHandle(SQL_HANDLE_STMT, statementHandle);
}
else
{
cout << "Connection error: " << retcode << endl;
}
// 释放连接句柄
SQLDisconnect(connectionHandle);
SQLFreeHandle(SQL_HANDLE_DBC, connectionHandle);
// 释放环境句柄
SQLFreeHandle(SQL_HANDLE_ENV, environmentHandle);
return 0;
}
```
其中,`SERVER_NAME`、`DATABASE_NAME`、`USERNAME` 和 `PASSWORD` 分别是 SQL Server 数据库的服务器名称、数据库名称、用户名和密码;`TABLE_NAME` 是表名。你需要根据实际情况修改这些参数。
阅读全文