21xrx.com
2024-09-19 08:59:26 Thursday
登录
文章检索 我的文章 写文章
C++操作数据库的代码
2023-07-09 20:09:22 深夜i     --     --
C++ 操作 数据库 代码 SQL语句

C++是一种高级编程语言,它可以用于开发多种类型的应用程序,包括数据库管理系统。使用C++操作数据库非常常见,因为C++本身提供了许多操作数据库的工具和库。本文将为您展示如何使用C++代码来操作数据库。

在C++中操作数据库,需要使用一个数据库接口。现在有许多可用的数据库接口,如ODBC、JDBC、ADO等,本文将使用ODBC接口作为示例。下面是一段简单的C++代码,用于连接到一个ODBC数据库:


#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* connectionstring = (SQLCHAR*)"DRIVER={SQL Server};SERVER=localhost;DATABASE=mydatabase;UID=myusername;PWD=mypassword;";

  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);

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

        retcode = SQLDriverConnect(sqlconnectionhandle, NULL, connectionstring, SQL_NTS, NULL, 0, NULL, SQL_DRIVER_NOPROMPT);

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

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

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

            cout << "Connected to database successfully!" << endl;

          

        }

      }

    }

  }

  return retcode;

}

此代码将连接到本地主机上的一个名为“mydatabase”的数据库。要操作其他数据库或远程数据库,需要相应更改连接字符串中的参数。

一旦连接到数据库,就可以执行查询和修改操作。下面是一些用来执行查询的基本代码:


retcode = SQLExecDirect(sqlstatementhandle, (SQLCHAR*)"SELECT * FROM mytable", SQL_NTS);

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

  while (SQLFetch(sqlstatementhandle) == SQL_SUCCESS)

    // process each row returned by the query

  

}

此代码将从名为“mytable”的表中选择所有列。可以在查询中使用WHERE子句来限制结果,如“SELECT * FROM mytable WHERE id = 5”。

对于修改数据,可以使用SQLPrepare()函数来准备SQL语句,然后使用SQLExecute()函数来执行它:


retcode = SQLPrepare(sqlstatementhandle, (SQLCHAR*)"UPDATE mytable SET field1 = ?, field2 = ? WHERE id = ?", SQL_NTS);

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

  SQLLEN param1 = 123;

  SQLLEN param2 = 456;

  SQLLEN param3 = 5;

  retcode = SQLBindParameter(sqlstatementhandle, 1, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0, &param1, 0, NULL);

  retcode = SQLBindParameter(sqlstatementhandle, 2, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0, &param2, 0, NULL);

  retcode = SQLBindParameter(sqlstatementhandle, 3, SQL_PARAM_INPUT, SQL_C_SLONG, SQL_INTEGER, 0, 0, &param3, 0, NULL);

  retcode = SQLExecute(sqlstatementhandle);

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

    cout << "Update completed!" << endl;

  

}

此代码将更新名为“mytable”的表中的一些行。可以使用其他SQL语句来执行其他类型的修改操作,如INSERT和DELETE。

以上代码只是C++操作数据库的基础,还有许多其他功能和细节需要掌握。希望这篇文章可以帮助您开始使用C++操作数据库。

  
  

评论区

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