21xrx.com
2025-04-14 04:44:38 Monday
文章检索 我的文章 写文章
C++与ODBC数据库的连接和操作
2023-07-04 18:03:10 深夜i     20     0
C++ ODBC 数据库连接 数据库操作 SQL语句

随着计算机技术的快速发展,数据库成为了信息系统中不可或缺的一部分。而ODBC(Open Database Connectivity)作为一种用于连接数据库的API,为程序员提供了一种简单高效的访问数据库的方式。而C++作为一种功能强大、性能优异的编程语言,能够与ODBC数据库进行连接和操作,为开发者提供了更加便捷的数据管理方式。

C++的ODBC连接方式:

C++连接ODBC数据库需要引用ODBC的头文件和库文件,在代码中调用相关函数实现连接,以下是一个简单的连接MySQL数据库的例子:

#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
using namespace std;
int main() {
  SQLHENV hEnv=NULL; //环境句柄
  SQLHDBC hDbc=NULL; //连接句柄
  SQLRETURN ret=SQL_SUCCESS;
  SQLCHAR ConnStrOut[1024] = {'\0'};
  SQLSMALLINT nNum = 0;
  SQLAllocHandle(SQL_HANDLE_ENV,NULL,&hEnv);
  SQLSetEnvAttr(hEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
  SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDbc);
  ret = SQLDriverConnect(hDbc,NULL,(SQLCHAR*)"DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=127.0.0.1;DATABASE=test;USER=root;PASSWORD=123456;",SQL_NTS,ConnStrOut,1024,&nNum,SQL_DRIVER_COMPLETE);
  if(SQL_SUCCEEDED(ret))
  
    cout<<"连接成功"<<endl;
  
  else
  
    cout<<"连接失败"<<endl;
  
  SQLDisconnect(hDbc);
  SQLFreeHandle(SQL_HANDLE_DBC,hDbc);
  SQLFreeHandle(SQL_HANDLE_ENV,hEnv);
  return 0;
}

通过调用相关函数连接数据库后,即可通过C++代码对数据库进行操作。例如,以下是一个C++程序向MySQL数据库中插入一条数据的示例:

#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
using namespace std;
int main() {
  SQLHENV hEnv=NULL; //环境句柄
  SQLHDBC hDbc=NULL; //连接句柄
  SQLHSTMT hStmt=NULL; //语句句柄
  SQLRETURN ret=SQL_SUCCESS;
  SQLCHAR ConnStrOut[1024] = {'\0'};
  SQLSMALLINT nNum = 0;
  SQLAllocHandle(SQL_HANDLE_ENV,NULL,&hEnv);
  SQLSetEnvAttr(hEnv,SQL_ATTR_ODBC_VERSION,(SQLPOINTER)SQL_OV_ODBC3,SQL_IS_INTEGER);
  SQLAllocHandle(SQL_HANDLE_DBC,hEnv,&hDbc);
  ret = SQLDriverConnect(hDbc,NULL,(SQLCHAR*)"DRIVER={MySQL ODBC 5.3 Unicode Driver};SERVER=127.0.0.1;DATABASE=test;USER=root;PASSWORD=123456;",SQL_NTS,ConnStrOut,1024,&nNum,SQL_DRIVER_COMPLETE);
  if(SQL_SUCCEEDED(ret))
  
    cout<<"连接成功"<<endl;
  
  else
  
    cout<<"连接失败"<<endl;
  
  SQLAllocHandle(SQL_HANDLE_STMT,hDbc,&hStmt);
  ret = SQLExecDirect(hStmt,(SQLCHAR*)"insert into student (name,age,gender) values ('张三',20,'男')",SQL_NTS);
  if(SQL_SUCCEEDED(ret))
  
    cout<<"插入成功"<<endl;
  
  else
  
    cout<<"插入失败"<<endl;
  
  SQLFreeHandle(SQL_HANDLE_STMT,hStmt);
  SQLDisconnect(hDbc);
  SQLFreeHandle(SQL_HANDLE_DBC,hDbc);
  SQLFreeHandle(SQL_HANDLE_ENV,hEnv);
  return 0;
}

以上C++程序连接到了MySQL数据库,插入了一条名为“张三”的学生记录。

结语:

通过C++与ODBC数据库的连接和操作,极大地方便了开发者的数据管理工作。但是,在实际应用中,在进行数据库操作时一定要谨慎,在保证程序正常运行的同时,也要保证数据的安全和完整性。

  
  

评论区

请求出错了