21xrx.com
2024-12-22 23:42:48 Sunday
登录
文章检索 我的文章 写文章
C++中链接SQL的实现代码
2023-07-07 08:31:51 深夜i     --     --
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的链接技术。

  
  

评论区

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