21xrx.com
2025-03-28 00:42:15 Friday
文章检索 我的文章 写文章
C++中链接SQL的实现代码
2023-07-07 08:31:51 深夜i     10     0
C++ SQL 链接 实现 代码

在计算机编程方面,C++语言是一种广泛应用的高级编程语言,而SQL(Structured Query Language)是一种广为使用的数据库管理系统语言。在C++中,我们可以使用一些库来实现与SQL的链接,如ODBC(Open Database Connectivity)库和MySQL C++ Connector库等。

以下是使用ODBC库来实现C++和SQL的链接的实现代码:

#include <iostream>
#include <odbcinst.h>
#include <sqlext.h>
int main()
{
  SQLHENV env;
  SQLHDBC dbc;
  SQLHSTMT stmt;
  SQLRETURN ret;
  SQLCHAR outstr[1024];
  SQLSMALLINT outstrlen;
  // Allocate environment handle
  ret = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &env);
  if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
    std::cout << "Unable to allocate environment handle." << std::endl;
    return 1;
  
  // Set the ODBC version environment attribute
  ret = SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
  if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
    std::cout << "Unable to set the SQL_ATTR_ODBC_VERSION." << std::endl;
    return 1;
  
  // Allocate connection handle
  ret = SQLAllocHandle(SQL_HANDLE_DBC, env, &dbc);
  if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
    std::cout << "Unable to allocate connection handle." << std::endl;
    return 1;
  
  // Connect to the SQL Server using a DSN
  SQLCHAR dsn[] = "mydsn";
  SQLCHAR uid[] = "myusername";
  SQLCHAR pwd[] = "mypassword";
  ret = SQLConnect(dbc, dsn, SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS);
  if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
    std::cout << "Unable to connect to SQL Server." << std::endl;
    return 1;
  
  // Allocate statement handle
  ret = SQLAllocHandle(SQL_HANDLE_STMT, dbc, &stmt);
  if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
    std::cout << "Unable to allocate statement handle." << std::endl;
    return 1;
  
  // Execute a simple query
  SQLCHAR query[] = "SELECT * FROM mytable";
  ret = SQLExecDirect(stmt, query, SQL_NTS);
  if (ret != SQL_SUCCESS && ret != SQL_SUCCESS_WITH_INFO)
    std::cout << "Unable to execute query." << std::endl;
    return 1;
  
  // Fetch the data
  SQLCHAR name[50];
  int age;
  while (SQLFetch(stmt) == SQL_SUCCESS)
  {
    SQLGetData(stmt, 1, SQL_C_CHAR, name, 50, NULL);
    SQLGetData(stmt, 2, SQL_C_LONG, &age, 0, NULL);
    std::cout << "Name: " << name << ", age: " << age << std::endl;
  }
  // Free statement handle
  SQLFreeHandle(SQL_HANDLE_STMT, stmt);
  // Disconnect and free connection handle
  SQLDisconnect(dbc);
  SQLFreeHandle(SQL_HANDLE_DBC, dbc);
  // Free environment handle
  SQLFreeHandle(SQL_HANDLE_ENV, env);
  return 0;
}

上面的代码示例使用了ODBC库来连接SQL Server,包括以下步骤:

1. 分配环境句柄

2. 设置ODBC版本环境属性

3. 分配连接句柄

4. 使用DSN连接到SQL Server

5. 分配语句句柄

6. 执行一个简单的查询

7. 获取数据

8. 释放语句句柄

9. 断开连接和释放连接句柄

10. 释放环境句柄

需要注意的是,这里的SQL Server连接字符串是通过DSN来指定的。在实际使用中,也可以直接使用SQL Server的IP地址、端口、数据库名称等信息来连接。

总之,在C++中连接SQL是一项非常重要的任务,可以使用不同的库进行实现。以上代码示例旨在帮助你更好地了解和掌握C++和SQL的链接技术。

  
  

评论区

请求出错了