下面是一个示例的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(&param, 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 = &param.buffer_length;

    if (mysql_stmt_bind_param(stmt, &param)) {
        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 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录