linux cc++ 调mysql_stmt_prepare实现select code from ucs2_mapmap where code= 给出实现
下面是一个示例的C++代码,演示如何在Linux上使用mysql_stmt_prepare函数执行SELECT语句,并从UCS2_MAP.Map表中选择code等于给定参数的行。
#include <mysql/mysql.h>
#include <iostream>
int main() {
MYSQL *conn;
MYSQL_STMT *stmt;
// 初始化MySQL连接
conn = mysql_init(NULL);
if (!mysql_real_connect(conn, "localhost", "username", "password", "database", 0, NULL, 0)) {
std::cerr << "Error connecting to database: " << mysql_error(conn) << std::endl;
return 1;
}
// 准备SQL语句
const char *sql = "SELECT code FROM ucs2_map.map WHERE code=?";
stmt = mysql_stmt_init(conn);
if (!stmt) {
std::cerr << "Error initializing statement: " << mysql_error(conn) << std::endl;
return 1;
}
if (mysql_stmt_prepare(stmt, sql, strlen(sql))) {
std::cerr << "Error preparing statement: " << mysql_stmt_error(stmt) << std::endl;
return 1;
}
// 绑定参数
MYSQL_BIND param;
memset(¶m, 0, sizeof(param));
param.buffer_type = MYSQL_TYPE_STRING;
param.buffer = (char*)malloc(sizeof(char) * 5); // 假设code字段的最大长度为5
param.buffer_length = 5;
param.is_null = 0;
param.length = ¶m.buffer_length;
if (mysql_stmt_bind_param(stmt, ¶m)) {
std::cerr << "Error binding parameter: " << mysql_stmt_error(stmt) << std::endl;
return 1;
}
// 输入参数值
std::string code;
std::cout << "Enter code: ";
std::cin >> code;
// 执行查询
if (mysql_stmt_execute(stmt)) {
std::cerr << "Error executing statement: " << mysql_stmt_error(stmt) << std::endl;
return 1;
}
// 绑定结果变量
MYSQL_BIND result;
memset(&result, 0, sizeof(result));
result.buffer_type = MYSQL_TYPE_STRING;
result.buffer = (char*)malloc(sizeof(char) * 5); // 假设code字段的最大长度为5
result.buffer_length = 5;
result.is_null = 0;
result.length = &result.buffer_length;
if (mysql_stmt_bind_result(stmt, &result)) {
std::cerr << "Error binding result: " << mysql_stmt_error(stmt) << std::endl;
return 1;
}
// 获取结果
if (mysql_stmt_fetch(stmt) == MYSQL_NO_DATA) {
std::cout << "No matching rows found." << std::endl;
} else {
std::cout << "Code: " << std::string((char*)result.buffer, *result.length) << std::endl;
}
// 释放资源
mysql_free_result(result);
mysql_stmt_close(stmt);
mysql_close(conn);
return 0;
}
请注意,代码中的"localhost","username","password"和"database"应替换为实际的数据库连接信息。此外,代码假设code字段的最大长度为5,您可以根据实际情况进行调整
原文地址: https://www.cveoy.top/t/topic/iN4e 著作权归作者所有。请勿转载和采集!