21xrx.com
2024-12-22 20:14:44 Sunday
登录
文章检索 我的文章 写文章
C++连接SQL Server数据库的代码
2023-07-05 08:06:42 深夜i     --     --
C++ SQL Server 数据库连接 代码

C++是一种广泛使用的编程语言,而SQL Server则是一种流行的关系型数据库管理系统。在实际应用中,我们可能需要将C++程序与SQL Server数据库进行连接,以实现数据的存储、查询和更新等操作。本文将介绍一些关于C++连接SQL Server数据库的代码方案。

1. 使用ODBC API连接

ODBC (Open Database Connectivity)是一种开放的数据库连接标准,它提供了一组API函数,使得应用程序能够通过ODBC驱动程序连接和操作各种数据库。ODBC API可以在C++中使用,并且可以轻松地连接和操作SQL Server数据库。

以下是ODBC API连接SQL Server的C++代码:


#include <sql.h>

#include <sqlext.h>

SQLHANDLE henv;

SQLHANDLE hdbc;

SQLHANDLE hstmt;

// 连接数据库

SQLRETURN retcode;

retcode = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);

retcode = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);

retcode = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);

retcode = SQLConnect(hdbc, (SQLCHAR*)"SERVERNAME", SQL_NTS, (SQLCHAR*)"USERNAME", SQL_NTS, (SQLCHAR*)"PASSWORD", SQL_NTS);

// 执行SQL语句

retcode = SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);

retcode = SQLExecDirect(hstmt, (SQLCHAR*)"SELECT * FROM table", SQL_NTS);

// 获取查询结果

SQLINTEGER id;

SQLCHAR name[20];

while (SQLFetch(hstmt) != SQL_NO_DATA) {

  SQLGetData(hstmt, 1, SQL_C_LONG, &id, 0, 0);

  SQLGetData(hstmt, 2, SQL_C_CHAR, name, 20, 0);

  printf("%d\t%s\n", id, name);

}

// 释放资源

SQLFreeHandle(SQL_HANDLE_STMT, hstmt);

SQLDisconnect(hdbc);

SQLFreeHandle(SQL_HANDLE_DBC, hdbc);

SQLFreeHandle(SQL_HANDLE_ENV, henv);

2. 使用MFC的数据库类连接

C++中的MFC框架提供了一些内置的数据库类,可以方便地连接和操作SQL Server数据库。通过使用CDatabase、CRecordset等类来实现,可以避免手写ODBC API调用代码,提高开发效率。

以下是使用MFC数据库类连接SQL Server的C++代码:


#include <afxdb.h>

CDatabase db;

if (db.OpenEx("DSN=SQLServer")) {

  CRecordset recset(&db);

  CString sql = "SELECT * FROM table";

  recset.Open(CRecordset::forwardOnly, sql, CRecordset::readOnly);

  while (!recset.IsEOF()) {

    int id;

    CString name;

    recset.GetFieldValue("id", id);

    recset.GetFieldValue("name", name);

    printf("%d\t%s\n", id, name);

    recset.MoveNext();

  }

  recset.Close();

  db.Close();

}

以上是两种常见的C++连接SQL Server数据库的代码方案,开发者可以根据实际需求进行选择和应用。同时,需要注意安全性和性能等问题,在编写代码时要细心谨慎。

  
  

评论区

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