21xrx.com
2024-09-19 09:18:34 Thursday
登录
文章检索 我的文章 写文章
C++连接SQL的示例代码
2023-07-04 21:00:54 深夜i     --     --
C++ SQL 连接 示例代码 数据库

本文将分享一个C++连接SQL的示例代码,该代码可以连接各种类型的SQL数据库,如MySQL、Oracle、SQL Server等。

首先,我们需要安装ODBC(Open Database Connectivity)驱动程序,以便使用C++连接SQL数据库。在Windows系统上,可以从Microsoft官方网站下载ODBC驱动程序。

下面是连接MySQL数据库的示例代码:


#include<iostream>

#include<Windows.h>

#include<sql.h>

#include<sqlext.h>

using namespace std;

int main()

{

  SQLHANDLE sqlenvhandle;

  SQLHANDLE sqlconnectionhandle;

  SQLHANDLE sqlstatementhandle;

  SQLRETURN retcode;

  SQLCHAR retconstring[1024];

  sqlenvhandle = NULL;

  sqlconnectionhandle = NULL;

  sqlstatementhandle = NULL;

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

  if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

  {

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

    if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

    {

      retcode = SQLAllocHandle(SQL_HANDLE_DBC, sqlenvhandle, &sqlconnectionhandle);

      SQLCHAR* connectionstring = (SQLCHAR*) "DRIVER={MySQL ODBC 8.0 ANSI Driver};SERVER=localhost;DATABASE=test_database;UID=root;PWD=password";

      retcode = SQLDriverConnect(sqlconnectionhandle, NULL, (SQLCHAR*)connectionstring, SQL_NTS, retconstring, 1024, NULL, SQL_DRIVER_NOPROMPT);

      if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

      {

        cout << "Connection successful" << endl;

        retcode = SQLAllocHandle(SQL_HANDLE_STMT, sqlconnectionhandle, &sqlstatementhandle);

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

        retcode = SQLExecDirect(sqlstatementhandle, query, SQL_NTS);

        if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO)

        {

          SQLINTEGER id;

          SQLCHAR name[64];

          SQLINTEGER age;

          while (SQLFetch(sqlstatementhandle) == SQL_SUCCESS)

          {

            SQLGetData(sqlstatementhandle, 1, SQL_C_ULONG, &id, 0, NULL);

            SQLGetData(sqlstatementhandle, 2, SQL_C_CHAR, name, sizeof(name), NULL);

            SQLGetData(sqlstatementhandle, 3, SQL_C_LONG, &age, 0, NULL);

            cout << id << " " << name << " " << age << endl;

          }

        }

        else

        

          cout << "Error executing query" << endl;

        

      }

      else

      

        cout << "Connection failed" << endl;

      

    }

  }

  SQLFreeHandle(SQL_HANDLE_STMT, sqlstatementhandle);

  SQLDisconnect(sqlconnectionhandle);

  SQLFreeHandle(SQL_HANDLE_DBC, sqlconnectionhandle);

  SQLFreeHandle(SQL_HANDLE_ENV, sqlenvhandle);

  return 0;

}

以上代码通过ODBC连接MySQL数据库,显示一个名为test_database的数据库中的一个名为test_table的表。

此外,我们还可以使用类似的方法连接Oracle或SQL Server等数据库。只需要更改相应的ODBC驱动程序和连接字符串即可。

总之,C++连接SQL数据库的示例代码为我们提供了一个很好的起点,可以用于实现各种数据库操作,如查询、插入、更新和删除等。使用此代码,我们可以轻松的连接任何类型的SQL数据库,并在C++代码中执行SQL语句。

  
  

评论区

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