// 执行查询操作
void ConnectorMySQL::exec_select(const std::string &command, ErrorCode &error_code, std::vector<char> &result)
{
    result.clear();
    error_code.clear();
    
    if (is_connected())
    {
        mysql_real_query(&mysql_, command.data(), (unsigned long)command.size());
        int error = mysql_errno(&mysql_);
        if (error != 0)
        {
            error_code.code = error;
            error_code.message = mysql_error(&mysql_);
            return;
        }

        if (!SerializeInterface<MYSQL>::serialize_result(mysql_, result))
        {
            error_code.code = mysql_errno(&mysql_);
            error_code.message = mysql_error(&mysql_);
        }
    }
    else
    {
        throw NotConnected();
    }
}
// 设置字符集
void ConnectorMySQL::set_character_set(const char *csname, ErrorCode &error_code)
{
    error_code.clear();

    if (is_connected())
    {
        mysql_set_character_set(&mysql_, csname);
        int error = mysql_errno(&mysql_);
        if (error != 0)
        {
            error_code.code = error;
            error_code.message = mysql_error(&mysql_);
        }
    }
    else
    {
        throw NotConnected();
    }
}
// 选择数据库
void ConnectorMySQL::select_db(const char *db, ErrorCode &error_code)
{
    error_code.clear();

    if (is_connected())
    {
        mysql_select_db(&mysql_, db);
        int error = mysql_errno(&mysql_);
        if (error == 0)
        {
            select_db_ = db;
        }
        else
        {
            error_code.code = error;
            error_code.message = mysql_error(&mysql_);
        }
    }
    else
    {
        throw NotConnected();
    }
}