• mysql c connector 多条sql语句执行示例


     

    //  假设参数 sql已经包含多条sql语句。如 sql = "insert into table1(...) values(...); update table2 set a=1;";  

    const bool CDBOperator::MultiQuery(const std::string sql, std::string& error)

    {
    int res = 0;
    bool ret = false;
    MYSQL_RES* result = NULL;
    std::string e;
    try
    {
    //disable autocommit
    if(!AutoCommit(AUTOCOMMIT_DISABLE, error))
    {
    return false;
    }
    res = mysql_real_query(m_mysql, sql.c_str(), sql.length());
    // if query fail
    if(0 != res)
    {
    error = mysql_error(m_mysql);
    Rollback(e);
    AutoCommit(AUTOCOMMIT_ENABLE, e);
    return false;
    }
    do
    {
    /* did current statement return data? */
    result = mysql_store_result(m_mysql);
    if (result) {
    mysql_free_result(result);
    } else { /* no result set or error */
    if (mysql_field_count(m_mysql) == 0) {
    printf("%lld rows affected ",
    mysql_affected_rows(m_mysql));
    } else { /* some error occurred */
    printf("Could not retrieve result set ");
    break;
    }
    }
    /* more results? -1 = no, >0 = error, 0 = yes (keep looping) */
    if ((res = mysql_next_result(m_mysql)) > 0)
    printf("Could not execute statement ");
    } while (res == 0);
    ret = Commit(error);
    AutoCommit(AUTOCOMMIT_ENABLE, e);
    if(!ret)
    {
    return false;
    }
    return true;
    }
    catch(...)
    {
    error = mysql_error(m_mysql);
    return false;
    }
  • 相关阅读:
    带下拉子菜单的导航菜单
    如何使用myFocus插件制作焦点图效果
    将博客搬至CSDN
    《转》二进制与三进制的那些趣题
    二叉树遍历 (前序 层次 == 深度 广度) 层次遍历
    数组全排列 knuth 分解质因数
    堆排序
    双向快速排序
    二路归并排序
    字符串的排列
  • 原文地址:https://www.cnblogs.com/qianlicao/p/9011559.html
Copyright © 2020-2023  润新知