21xrx.com
2024-12-22 22:48:45 Sunday
登录
文章检索 我的文章 写文章
C++连接SQL Server数据库:实现交互式数据库应用程序
2023-07-01 08:53:58 深夜i     --     --
C++ SQL Server 数据库应用程序 交互式 连接

C++是一种广泛使用的高级编程语言,它允许程序员编写有效的、可移植的代码。SQL Server是微软公司推出的一款关系型数据库管理系统,被广泛应用于企业级应用程序中。在本文中,我们将介绍如何使用C++编写一个交互式数据库应用程序,连接SQL Server数据库。

在开始编写代码之前,我们需要安装SQL Server ODBC驱动程序,并在连接字符串中指定正确的驱动程序名称。在本例中,我们将使用ODBC Driver for SQL Server 17.0驱动程序。

首先,我们需要包含相关的头文件,包括


#include <sql.h>

#include <sqlext.h>

接下来,我们可以定义一个SQLHENV类型的句柄来表示环境句柄,然后创建一个新的环境句柄。


SQLHENV env;

SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);

SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);

接着,我们定义一个SQLHDBC类型的句柄来表示数据库连接句柄,并使用SQLDriverConnect函数连接到数据库。


SQLHDBC dbc;

SQLCHAR* connectionString = (SQLCHAR*)"Driver={ODBC Driver for SQL Server};Server=localhost,1433;Database=MyDatabase;Trusted_Connection=yes;";

SQLCHAR error[1024];

SQLSMALLINT errorLen;

SQLRETURN ret = SQLDriverConnect(env, NULL, connectionString, SQL_NTS, error, 1024, &errorLen, SQL_DRIVER_NOPROMPT);

if (ret == SQL_SUCCESS || ret == SQL_SUCCESS_WITH_INFO) {

  SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);

  SQLSetConnectAttr(dbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER)5L, 0);

  SQLSetConnectAttr(dbc, SQL_ATTR_AUTOCOMMIT, (SQLPOINTER)SQL_AUTOCOMMIT_OFF, 0);

  SQLCHAR* query = (SQLCHAR*)"SELECT * FROM Persons";

  SQLLEN numRows = 0;

  SQLHANDLE hstmt;

  SQLAllocHandle(SQL_HANDLE_STMT, dbc, &hstmt);

  SQLExecDirect(hstmt, query, SQL_NTS);

  SQLRETURN retcode = SQL_SUCCESS;

  while (retcode == SQL_SUCCESS) {

    SQLCHAR firstName[1024], lastName[1024];

    SQLINTEGER age;

    SQLBindCol(hstmt, 1, SQL_C_CHAR, firstName, 1024, NULL);

    SQLBindCol(hstmt, 2, SQL_C_CHAR, lastName, 1024, NULL);

    SQLBindCol(hstmt, 3, SQL_C_LONG, &age, sizeof(SQLINTEGER), NULL);

    retcode = SQLFetch(hstmt);

    if (retcode == SQL_SUCCESS) {

      printf("First Name: %s\nLast Name: %s\nAge: %d\n", firstName, lastName, age);

      numRows++;

    }

  }

  SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

}

上述代码中,我们定义了一个连接字符串,指定了连接数据库所需的一些信息,如服务器地址、数据库名称和登录凭据。然后,我们使用SQLDriverConnect函数连接到数据库,并检查返回值以确认是否连接成功。

如果连接成功,我们创建一个新的SQLHDBC类型的句柄来表示数据库连接句柄,并设置一些连接属性,以便在后续的操作中使用。接着,我们定义一个SQLCHAR类型的指针来表示要执行的SQL查询,以及一个SQLHANDLE类型的句柄来表示语句句柄,并使用SQLExecDirect函数执行SQL查询。

然后,我们可以使用SQLBindCol函数将结果列绑定到变量,在循环中一次取出一行数据,并使用SQLFetch函数检索与前面绑定的列对应的每个结果行中的列。最后,我们释放语句句柄并关闭数据库连接。

现在,我们已经成功地使用C++编写了一个连接到SQL Server数据库的交互式应用程序。可以根据具体的需求进行修改和扩展,例如,支持动态查询,事务处理等。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复