C++ 读取 SQL Server 示例分享
在 C++ 中,可以使用 ODBC API 来读取 SQL Server 数据库。本攻略将详细介绍 C++ 读取 SQL Server 的方法,并提供多个示例说明。
方法一:使用 ODBC API
ODBC API 是一组用于访问数据库的函数,可以使用它来读取 SQL Server 数据库。以下是使用 ODBC API 读取 SQL Server 数据库的步骤:
-
安装 SQL Server ODBC 驱动程序。
-
在 C++ 代码中,使用 ODBC API 连接到 SQL Server 数据库。
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
// 连接到 SQL Server 数据库
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
retcode = SQLConnect(hdbc, (SQLCHAR*)"DataSourceName", SQL_NTS, (SQLCHAR*)"Username", SQL_NTS, (SQLCHAR*)"Password", SQL_NTS);
- 执行 SQL 查询语句。
// 执行 SQL 查询语句
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
retcode = SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM Employees", SQL_NTS);
- 获取查询结果。
// 获取查询结果
SQLCHAR name[50];
SQLINTEGER age;
SQLDOUBLE salary;
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(hstmt, 1, SQL_C_CHAR, name, sizeof(name), NULL);
SQLGetData(hstmt, 2, SQL_C_LONG, &age, 0, NULL);
SQLGetData(hstmt, 3, SQL_C_DOUBLE, &salary, 0, NULL);
printf("%s %d %f\n", name, age, salary);
}
- 断开与 SQL Server 数据库的连接。
// 断开与 SQL Server 数据库的连接
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
示例说明
以下是两个示例说明:
示例一:使用 ODBC API 读取 SQL Server 数据库
使用 ODBC API 读取 SQL Server 数据库可以通过连接到数据库、执行 SQL 查询语句、获取查询结果和断开与数据库的连接的方式读取 SQL Server 数据库。以下是一个简单的示例:
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
int main() {
// 连接到 SQL Server 数据库
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
retcode = SQLConnect(hdbc, (SQLCHAR*)"DataSourceName", SQL_NTS, (SQLCHAR*)"Username", SQL_NTS, (SQLCHAR*)"Password", SQL_NTS);
// 执行 SQL 查询语句
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
retcode = SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM Employees", SQL_NTS);
// 获取查询结果
SQLCHAR name[50];
SQLINTEGER age;
SQLDOUBLE salary;
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(hstmt, 1, SQL_C_CHAR, name, sizeof(name), NULL);
SQLGetData(hstmt, 2, SQL_C_LONG, &age, 0, NULL);
SQLGetData(hstmt, 3, SQL_C_DOUBLE, &salary, 0, NULL);
printf("%s %d %f\n", name, age, salary);
}
// 断开与 SQL Server 数据库的连接
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
以上示例中,使用 ODBC API 读取 SQL Server 数据库,通过连接到数据库、执行 SQL 查询语句、获取查询结果和断开与数据库的连接的方式读取 SQL Server 数据库。
示例二:使用 ODBC API 读取 SQL Server 数据库中的指定数据
使用 ODBC API 读取 SQL Server 数据库中的指定数据可以通过修改 SQL 查询语句的方式读取 SQL Server 数据库中的指定数据。以下是一个简单的示例:
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
SQLRETURN retcode;
int main() {
// 连接到 SQL Server 数据库
retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, SQL_IS_INTEGER);
retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
retcode = SQLConnect(hdbc, (SQLCHAR*)"DataSourceName", SQL_NTS, (SQLCHAR*)"Username", SQL_NTS, (SQLCHAR*)"Password", SQL_NTS);
// 执行 SQL 查询语句
retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
retcode = SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM Employees WHERE Age > 30", SQL_NTS);
// 获取查询结果
SQLCHAR name[50];
SQLINTEGER age;
SQLDOUBLE salary;
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(hstmt, 1, SQL_C_CHAR, name, sizeof(name), NULL);
SQLGetData(hstmt, 2, SQL_C_LONG, &age, 0, NULL);
SQLGetData(hstmt, 3, SQL_C_DOUBLE, &salary, 0, NULL);
printf("%s %d %f\n", name, age, salary);
}
// 断开与 SQL Server 数据库的连接
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
以上示例中,使用 ODBC API 读取 SQL Server 数据库中的指定数据,通过修改 SQL 查询语句的方式读取 SQL Server 数据库中的指定数据。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:c++读取sqlserver示例分享 - Python技术站