• <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>
            posts - 311, comments - 0, trackbacks - 0, articles - 0
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

            前兩天搞mysql的東西,用mysql提供的C API 訪問,遇到些問題,在這里分享一下,希望對其他人有幫助。

               mysql C API 調用存儲過程,并返回結果集。需要注意幾個問題:

            在建立鏈接的時候要加選項CLIENT_MULTI_STATEMENTS 或 CLIENT_MULTI_RESULTS,以便可以讓query執行多個語句。

            mysql_real_connect(mySQL,serverIP,user,password,database,serverPort,NULL,CLIENT_MULTI_STATEMENTS)

                 當query時可能產生錯誤error:2014 Commands out of sync; you can't run this command now

             

            Mysql文檔中說明錯誤:Commands out of sync

            If you get Commands out of sync; you can't run this command now in your client code, you are calling client functions in the wrong order.

            This can happen, for example, if you are using mysql_use_result() and try to execute a new query before you have called mysql_free_result(). It can also happen if you try to execute two queries that return data without calling mysql_use_result() or mysql_store_result() in between.

             

            當執行完query后,mysql將結果集放在一個result集中,產生以上問題的原因有兩個:

            一是未將MYSQL_RES所指對象釋放,即在下次查詢時要mysql_free_result();

            二是結果result集不為空,這個原因比較隱蔽。解決方法可以用如下寫法:

            do
            {
              
            /* Process all results */
              printf(
            "total affected rows: %lld", mysql_affected_rows(mysql));
              
              
            if (!(result= mysql_store_result(mysql)))
              {
                 printf(stderr, 
            "Got fatal error processing query/n");
                 exit(
            1);
              }
              process_result_set(result); 
            /* client function */
              mysql_free_result(result);
            while (!mysql_next_result(mysql));

            還有個問題感覺比較奇怪,我調用一個存儲過程,存儲過程中就一句select

            Create procedure test()

            Begin

                Select * from test ;

            End ;

            用以上方法處理結果集循環會執行兩次,開始我只調了一次result= mysql_store_result(mysql)),導致以后執行query2014錯誤。

            青草国产精品久久久久久| 久久久久成人精品无码中文字幕| 久久精品国产亚洲精品2020| 久久精品国产99久久久古代| 香蕉久久av一区二区三区| 国产精品美女久久久m| 国产毛片久久久久久国产毛片| 国产精品无码久久久久 | 国内精品伊人久久久久妇| 五月丁香综合激情六月久久| 国产亚州精品女人久久久久久| 久久免费视频1| 蜜臀久久99精品久久久久久| 久久久婷婷五月亚洲97号色| 久久婷婷人人澡人人爽人人爱| 72种姿势欧美久久久久大黄蕉| 97视频久久久| 久久精品国产免费观看三人同眠| 国产精品丝袜久久久久久不卡 | 久久人妻少妇嫩草AV无码蜜桃| 99精品国产在热久久无毒不卡 | 品成人欧美大片久久国产欧美...| 日产精品99久久久久久| 中文国产成人精品久久不卡| 99久久做夜夜爱天天做精品| 亚洲а∨天堂久久精品9966| 久久人做人爽一区二区三区| 久久久久久久女国产乱让韩| 99久久国产精品免费一区二区| 久久久久久亚洲Av无码精品专口| 亚洲va久久久噜噜噜久久狠狠| 久久国产精品无码HDAV| 青春久久| 国产午夜久久影院| 2021久久精品免费观看| 午夜欧美精品久久久久久久| 久久国产精品一国产精品金尊| 久久精品无码专区免费| 国产精品久久永久免费| 欧美与黑人午夜性猛交久久久| av国内精品久久久久影院|