• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Benjamin

            靜以修身,儉以養(yǎng)德,非澹薄無以明志,非寧靜無以致遠(yuǎn)。
            隨筆 - 397, 文章 - 0, 評(píng)論 - 196, 引用 - 0
            數(shù)據(jù)加載中……

            c++ 執(zhí)行mysql的存儲(chǔ)過程

            mysql執(zhí)行存儲(chǔ)過程其實(shí)就是執(zhí)行多條查詢語句,存儲(chǔ)過程是可編程的函數(shù),在數(shù)據(jù)庫中創(chuàng)建并保存,可以由SQL語句和控制結(jié)構(gòu)組成。數(shù)據(jù)庫中的存儲(chǔ)過程可以看做是對(duì)編程中面向?qū)ο蠓椒ǖ哪M,它允許控制數(shù)據(jù)的訪問方式。
            static void
            print_result(mysqlpp::StoreQueryResult& res, int index)
            {
             // Show how many rows are in result, if any
             mysqlpp::StoreQueryResult::size_type num_results = res.size();
             if (res && (num_results > 0)) {
              cout << "Result set " << index << " has " << num_results <<
               " row" << (num_results == 1 ? "" : "s") << ':' << endl;
             }
             //else {
              //cout << "Result set " << index << " is empty." << endl;
              //return;
             //}
            }
            //執(zhí)行查詢語句會(huì)有多條返回結(jié)果(多行數(shù)據(jù))
            void ExecuteSql(const std::string& sSqlstring, std::list>& aRet)
            {
             try {
              mysqlpp::Connection* pConnection = GetConnection();
              mysqlpp::Query query = pConnection->query(sSqlstring);
              mysqlpp::StoreQueryResult res = query.store();
              query.reset();
              if (res.size()>0)
              {
               size_t columns = res.num_fields();
               mysqlpp::StoreQueryResult::iterator rit;
               for (rit = res.begin(); rit != res.end(); ++rit)
               {
                std::map fieldVal;
                for (unsigned int i = 0; i < columns; ++i)
                {
                 fieldVal[res.field_name(i)] = (*rit)[i].c_str();
                }
                aRet.push_back(fieldVal);
               }
              }
             }
             catch (const mysqlpp::BadQuery& er) {
              // Handle any query errors
              cerr << "Query error: " << er.what() << endl;
              return;
             }
             catch (const mysqlpp::BadConversion& er) {
              // Handle bad conversions
              cerr << "Conversion error: " << er.what() << endl <<
               "\tretrieved data size: " << er.retrieved <<
               ", actual size: " << er.actual_size << endl;
              return;
             }
             catch (const mysqlpp::Exception& er) {
              // Catch-all for any other MySQL++ exceptions
              cerr << "Error: " << er.what() << endl;
              return;
             }
            }

            static void
            print_multiple_results(mysqlpp::Query& query)
            {
             // Execute query and print all result sets
             mysqlpp::StoreQueryResult res = query.store();
             print_result(res, 0);
             for (int i = 1; query.more_results(); ++i) {
              res = query.store_next();
              print_result(res, i);
             }
            }
            bool Execute_MultiStatement(std::vector& sContent)
            {
             try
             {
              mysqlpp::Connection* pConnection = GetConnection();
              pConnection->set_option(new mysqlpp::MultiResultsOption(CLIENT_MULTI_STATEMENTS));
              mysqlpp::Query query = pConnection->query();
              for (auto content:sContent)
              {
               query << content << "\r ";
              }
              //cout << "Multi-query: " << endl << query << endl;
              print_multiple_results(query);
              query.reset();
             }
             catch (const mysqlpp::BadOption& err) {
              std::cerr << err.what() << std::endl;
              cerr << "This function requires MySQL 4.1.1 or later." << endl;
              return false;
             }
             catch (const mysqlpp::ConnectionFailed& err) {
              std::cerr << "Failed to connect to database server: " <<
               err.what() << std::endl;
              return false;
             }
             catch (const mysqlpp::Exception& er) {
              // Catch-all for any other MySQL++ exceptions
              std::cerr << "Error: " << er.what() << std::endl;
              return false;
             }
             return true;
            }

            posted on 2018-02-01 13:54 Benjamin 閱讀(1402) 評(píng)論(0)  編輯 收藏 引用 所屬分類: C/C++數(shù)據(jù)庫

            久久93精品国产91久久综合| 国产精品中文久久久久久久| 综合久久国产九一剧情麻豆| 久久久噜噜噜久久熟女AA片| 久久精品国产91久久麻豆自制| 国产综合精品久久亚洲| 久久99国产精品二区不卡| 国产人久久人人人人爽| 久久久久无码精品| 久久综合香蕉国产蜜臀AV| 国产成人AV综合久久| 中文字幕久久精品无码| 精品久久久久久中文字幕大豆网| 久久精品国产免费| 日韩精品久久久久久| 综合网日日天干夜夜久久| 无码超乳爆乳中文字幕久久| 99久久精品国产一区二区蜜芽 | 婷婷久久综合九色综合绿巨人 | 久久国产免费直播| 人妻无码精品久久亚瑟影视 | 亚洲国产精品无码久久久不卡 | 欧美久久一级内射wwwwww.| 亚洲国产综合久久天堂| 国产精品久久久久久久久久免费| 久久精品国产99久久香蕉| 国产成人综合久久精品红| 狠狠色丁香久久婷婷综合五月| 99久久婷婷国产一区二区| 亚洲?V乱码久久精品蜜桃| 久久国产精品无码HDAV| 久久久WWW成人| 久久人人妻人人爽人人爽| 97久久精品国产精品青草| 久久99精品国产麻豆宅宅| 秋霞久久国产精品电影院| 亚洲精品综合久久| 久久91综合国产91久久精品| 成人综合久久精品色婷婷| 天天久久狠狠色综合| 亚洲av日韩精品久久久久久a|