写一个C++连接sqlserver数据库实现增删查改
时间: 2024-02-20 08:59:22 浏览: 120
这是一个 C++ 连接 SQL Server 数据库实现增删查改的示例代码:
```cpp
#include <iostream>
#include <windows.h>
#include <sqltypes.h>
#include <sql.h>
#include <sqlext.h>
using namespace std;
// 定义 SQL Server 连接信息
#define SQL_SERVER "SERVER_NAME"
#define SQL_DATABASE "DATABASE_NAME"
#define SQL_USERNAME "USERNAME"
#define SQL_PASSWORD "PASSWORD"
// 定义 SQL 语句
#define SQL_SELECT "SELECT * FROM table_name"
#define SQL_INSERT "INSERT INTO table_name (id, name, age) VALUES ('1', 'Tom', '20')"
#define SQL_UPDATE "UPDATE table_name SET age = '21' WHERE id = '1'"
#define SQL_DELETE "DELETE FROM table_name WHERE id = '1'"
// 执行 SQL 语句并输出结果
void executeSQL(SQLHANDLE& hstmt, const char* sql) {
SQLCHAR result[255];
SQLINTEGER num;
SQLRETURN retcode;
// 执行 SQL 语句
retcode = SQLExecDirect(hstmt, (SQLCHAR*)sql, SQL_NTS);
if (retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO) {
// 获取结果
while (SQLFetch(hstmt) == SQL_SUCCESS) {
SQLGetData(hstmt, 1, SQL_C_CHAR, result, 255, &num);
cout << result << endl;
}
}
else {
// 输出错误信息
SQLCHAR error[255];
SQLINTEGER errorNum;
SQLGetDiagRec(SQL_HANDLE_STMT, hstmt, 1, error, &errorNum, error, 255, &num);
cout << error << endl;
}
}
int main() {
// 定义 SQL Server 连接句柄
SQLHANDLE henv, hdbc, hstmt;
// 初始化环境句柄
SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv);
SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0);
// 初始化数据库连接句柄
SQLAllocHandle(SQL_HANDLE_DBC, henv, &hdbc);
SQLConnect(hdbc, (SQLCHAR*)SQL_SERVER, SQL_NTS, (SQLCHAR*)SQL_USERNAME, SQL_NTS, (SQLCHAR*)SQL_PASSWORD, SQL_NTS);
// 初始化语句句柄
SQLAllocHandle(SQL_HANDLE_STMT, hdbc, &hstmt);
// 执行 SQL 语句
executeSQL(hstmt, SQL_SELECT);
executeSQL(hstmt, SQL_INSERT);
executeSQL(hstmt, SQL_UPDATE);
executeSQL(hstmt, SQL_DELETE);
// 释放句柄
SQLFreeHandle(SQL_HANDLE_STMT, hstmt);
SQLDisconnect(hdbc);
SQLFreeHandle(SQL_HANDLE_DBC, hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, henv);
return 0;
}
```
该代码使用 Windows API 的 ODBC 接口连接 SQL Server 数据库,并执行 SQL 语句实现增删查改操作。您需要根据实际情况修改 SQL Server 连接信息和 SQL 语句。
阅读全文