shadowm icon

Untitled

shadowm | PRO | 04/20/18 06:02:54 AM UTC | 0 ⭐ | 338 👁️ | Never ⏰ | []
C++ |

900 B

|

None

|

0 👍

/

0 👎

template<typename T> T fetch_result_long_internal_(MYSQL_STMT* stmt, const std::string& sql)
{
    T result;
    my_bool is_null;
    MYSQL_BIND result_bind[1] = { make_bind(result, &is_null) };
 
    if(mysql_stmt_bind_result(stmt, result_bind) != 0)
        throw sql_error(mysql_stmt_error(stmt), sql);
 
    BOOST_SCOPE_EXIT(&stmt) {
        mysql_stmt_free_result(stmt);
    } ;
 
    int res = mysql_stmt_fetch(stmt);
    if(res == MYSQL_NO_DATA)
        throw sql_error("no data returned", sql);
    if(is_null)
        throw sql_error("null value returned", sql);
    if(res != 0)
        throw sql_error(mysql_stmt_error(stmt), sql);
    return result;
}
 
template<> int fetch_result<int>(MYSQL_STMT* stmt, const std::string& sql)
{
    return fetch_result_long_internal_<int>(stmt, sql);
}
 
template<> unsigned int fetch_result<unsigned int>(MYSQL_STMT* stmt, const std::string& sql)
{
    return fetch_result_long_internal_<unsigned int>(stmt, sql);
}

Comments