用c++连接数据库实现增删改查
时间: 2024-01-06 12:03:09 浏览: 111
shujukuceshi.zip_c++增删改查
要使用C++连接数据库,需要使用一个支持ODBC(Open Database Connectivity)的库,例如ODBC API或ODBC封装库(例如ODBC++或SOCI)。
这里提供一个使用ODBC API连接MySQL数据库的示例代码,实现简单的增删改查操作:
```c++
#include <iostream>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
int main()
{
// 声明ODBC连接句柄和语句句柄
SQLHENV henv;
SQLHDBC hdbc;
SQLHSTMT hstmt;
// 初始化ODBC环境句柄
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
// 初始化ODBC连接句柄
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLDriverConnect(hdbc, NULL, "DRIVER={MySQL ODBC 5.3 ANSI Driver};SERVER=localhost;DATABASE=test;UID=root;PWD=123456", SQL_NTS, NULL, 0, NULL, SQL_DRIVER_COMPLETE);
// 初始化ODBC语句句柄
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
// 插入数据
SQLExecDirect(hstmt, "INSERT INTO user (name, age) VALUES ('Tom', 18)", SQL_NTS);
// 更新数据
SQLExecDirect(hstmt, "UPDATE user SET age = 20 WHERE name = 'Tom'", SQL_NTS);
// 查询数据
SQLExecDirect(hstmt, "SELECT name, age FROM user WHERE age > 18", SQL_NTS);
SQLCHAR name[32];
SQLINTEGER age;
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(hstmt, 1, SQL_C_CHAR, name, sizeof(name), NULL);
SQLGetData(hstmt, 2, SQL_C_LONG, &age, sizeof(age), NULL);
std::cout << name << ", " << age << std::endl;
}
// 删除数据
SQLExecDirect(hstmt, "DELETE FROM user WHERE name = 'Tom'", SQL_NTS);
// 释放句柄
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
```
以上代码需要链接ODBC库,并且需要替换连接字符串中的数据库配置信息。在实际使用中,需要根据具体的数据库类型和库的版本,使用相应的驱动程序和连接字符串。
阅读全文