<span id="mktg5"></span>

<i id="mktg5"><meter id="mktg5"></meter></i>

        <label id="mktg5"><meter id="mktg5"></meter></label>
        最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
        問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        使用C連接Mysql_MySQL

        來源:懂視網 責編:小采 時間:2020-11-09 17:44:57
        文檔

        使用C連接Mysql_MySQL

        使用C連接Mysql_MySQL:一、高性能數據庫的選擇---- 在數據庫的應用開發中,常常會遇到性能和代價的之間矛盾。以作者在開發股市行情查詢和交易系統中遇到的問題為例,要在實時記錄1000多只股票每分鐘更新一次的行 情數據的同時,響應大量并發用戶的數據查詢請求。考慮到性價比和易維
        推薦度:
        導讀使用C連接Mysql_MySQL:一、高性能數據庫的選擇---- 在數據庫的應用開發中,常常會遇到性能和代價的之間矛盾。以作者在開發股市行情查詢和交易系統中遇到的問題為例,要在實時記錄1000多只股票每分鐘更新一次的行 情數據的同時,響應大量并發用戶的數據查詢請求。考慮到性價比和易維

        一、高性能數據庫的選擇

        ---- 在數據庫的應用開發中,常常會遇到性能和代價的之間矛盾。以作者在開發股市行

        情查詢和交易系統中遇到的問題為例,要在實時記錄1000多只股票每分鐘更新一次的行

        情數據的同時,響應大量并發用戶的數據查詢請求。考慮到性價比和易維護性,系統又

        要求在基于PC服務器,Windows NT平臺的軟硬件環境下實現。開始,我們采用了MS SQL

        Server 6.5 作為數據庫系統,用Visual C++ 6.0開發了訪問數據庫的前端,應用ODBC

        數據接口,在進行了大量的數據庫配置和程序優化后,發現仍不能滿足性能要求。后采

        用SQL Server的DB-Library接口,繞過了ODBC解釋層,可以每秒更新行情數據30次,同

        時支持20-30個左右的并發用戶進行行情查詢,基本滿足要求(單臺PC服務器,單PII3

        50 CPU,內存128M,SCSI硬盤)。有沒有可能進一步提高系統的性能和負載能力呢?經

        過分析,數據庫服務器是系統的瓶頸。當然,可以采用UNIX服務器+大型數據庫的系統

        平臺,但其開發、運行、維護的費用比微機+Windows NT平臺的費用高出數倍。我們在

        其它一些系統的開發中,也經常遇到這樣的矛盾。如何在微機平臺上建立大容量、高效

        率、易維護、高性價比的數據庫系統呢?

        ---- 考察國內基于微機平臺的數據庫應用系統,典型的如網易的分布式郵件系統,采用

        了FreeBSD+MySQL的平臺,其容量、負載能力和響應速度都很優秀。作者查閱了MySQL的

        相關文檔,發現MySQL是GNU軟件(即OpenSource自由軟件)中非常優秀的數據庫系統,

        它完全符合SQL92 (Entry level)和 ODBC( level 0-2)規范,在符合POSIX規范的操

        作系統上實現了非常高效的關系型數據庫管理系統。根據MySQL提供的文檔,它的數據操

        作堪稱所有數據庫中最高效的,Benchmark如下表:

        Reading 2000000 rows by index

        Database Seconds

        mysql 367

        mysql_odbc 464

        db2_odbc 1206

        informix_odbc 121126

        ms-sql_odbc 1634

        oracle_odbc 20800

        solid_odbc 877

        sybase_odbc 17614

        Inserting (350768) rows

        Database Seconds

        mysql 381

        mysql_odbc 619

        db2_odbc 3460

        informix_odbc 2692

        ms-sql_odbc 4012

        oracle_odbc 11291

        solid_odbc 1801

        sybase_odbc 4802

        (run on the same NT 4.0 machine)

        ---- 從MySQL的Benchmark中可以看到,MySQL的性能非常出眾(當然,測試的MySQL系統

        可能作了優化,被測數據可能是針對MySQL選擇的),而且MySQL提供了對Windows NT的

        支持。Windows NT+MySQL能否成為構建高性能數據庫應用的理想選擇呢?作者用MySQL

        的數據接口改寫了程序,經過一段時間的運行,證明MySQL確實是高效而穩定的數據庫,

        非常適合構建大容量、高效率、易維護、高性價比的數據庫應用系統。現將MySQL的安裝

        、運行、開發的心得與大家共享。

        二、MySQL的安裝和運行

        ---- 首先從http://www.mysql.com/(國內用戶可以從http://www.freecode.com.cn/m

        irror/mysql/)下載MySQL的執行代碼及源代碼。注意,Windows NT用戶要選擇NT下的執

        行代碼,我下載的是mysql-shareware-3.22.32-win.zip。解包后執行Setup,按屏幕提

        示即可完成安裝。

        ---- 拷貝MySQL根目錄(c:/mysql)下的my-example.cnf到c:/my.cnf,按文件中的提示

        編輯my.cnf(如果MySQL的根目錄是c:/mysql,可暫不改動my.cnf)。在NT的控制臺窗口

        中,進入MySQL的執行目錄(c:/mysql/bin),執行

        ---- C:/mysql/bin/mysqld-shareware --standalone

        ---- 則MySQL的數據庫引擎啟動。打開另一NT控制臺窗口,執行

        ---- C:/mysql/bin/mysql mysql

        ---- 建立數據庫連接,出現“mysql>”提示符后,執行

        ---- mysql > DELETE FROM user WHERE Host='localhost' AND User='';

        ---- mysql > QUIT

        ---- 刪除所有的非授權用戶。

        ---- 然后執行

        ---- C:/mysql/bin/mysqladmin reload

        ---- C:/mysql/bin/mysqladmin -u root password your_password

        ---- 其中,your_password是你選擇的數據庫管理員的口令,必須妥善保管。

        ---- 如果要每次都以管理員身份連接數據庫,則編輯c:/my.cnf,在[client]段中加入

        user=root

        password= your_password

        如果要停止MySQL的數據庫引擎,可以執行

        C:/mysql/bin/mysqladmin -u=root -p shutdown

        按提示輸入管理員口令后,MySQL的數據庫引擎停止。

        三、MySQL客戶端應用的開發

        ---- MySQL提供了豐富的數據接口API,包括C、C++、Perl、PHP、Python、TCL等API和

        JDBC,ODBC接口。出于性能考慮,我們采用了MySQL的C API進行開發。現以Visual C++

        環境為例,作一簡單介紹。

        ---- 新建一Win32 Console Application的Project,把“c:/mysql/include”添加到編

        譯選項的包含路徑中(在Project Options中加入 /I "d:/mysql/include&quounter.cgol.net 魈迦縵攏?

        #include

        #include

        #include

        #include

        int main( int argc, char * argv[] )

        {

        char szTargetDSN[] = "test";

        char szSqlText[500]="";

        char aszFlds[ 25 ][ 25 ];

        MYSQL * myData ;

        MYSQL_RES * res ;

        MYSQL_FIELD * fd ;

        MYSQL_ROW row ;

        int i,j,k;

        BOOL bCreate = TRUE;

        if ( (myData = mysql_init((MYSQL*) 0))

        //初始化數據結構

        && mysql_real_connect( myData, NULL,

        //連接數據庫

        "root", " your_password ", szTargetDSN,

        MYSQL_PORT, NULL, 0 ) )

        {

        if(bCreate)

        {

        sprintf(szSqlText, //構造SQL語句

        "create table mytable "

        //新建一張表

        "(time datetime, s1 char(6), "

        "s2 char(11), s3 int, s4 int)");

        if (mysql_query( myData, szSqlText))

        //執行SQL語句

        {//執行SQL語句出錯

        ErrLog( "Can't create table") ;

        mysql_close( myData ) ;

        return FALSE ;

        }

        sprintf(szSqlText,

        "insert into mytable "

        //向表中插入數據

        "values('2000-3-10 21:01:30',"

        //注意時間的格式

        "'Test','MySQLTest',2000,3)");

        if (mysql_query( myData, szSqlText))

        {//執行SQL語句出錯

        ErrLog( "Can't insert data to table") ;

        mysql_close( myData ) ;

        return FALSE ;

        }

        sprintf(szSqlText, "select * from mytable ");

        if (mysql_query( myData, szSqlText))

        //進行數據檢索

        {

        //執行SQL語句出錯

        mysql_close( myData ) ;

        return FALSE ;

        }

        else

        {

        res = mysql_store_result( myData ) ;

        //取得查詢結果

        i = (int) mysql_num_rows( res ) ;

        //取得有效記錄數

        printf( "Query: %s/n%ld records found:

        /n", szSqlText, i ) ;

        for ( i = 0 ; fd = mysql_fetch_field( res ) ;

        i++ )

        strcpy( aszFlds[ i ], fd->name ) ;

        //取得各字段名

        for (i=1; row = mysql_fetch_row( res ); )

        //依次讀取各條記錄

        {j = mysql_num_fields( res ) ;

        //取得記錄中的字段數

        printf( "Record #%ld:-/n", i++ ) ;

        for ( k = 0 ; k < j ; k++ )

        //輸出各字段的值

        printf( " Fld #%d (%s): %s/n", k + 1, aszFlds[ k ],

        (((row[k]==NULL)||

        (!strlen(row[k])))?"NULL":row[k])) ;

        puts( "==============================/n" ) ;

        }

        mysql_free_result( res ) ;

        }

        }

        else

        {//連接數據庫出錯

        ErrLog( "Can't connect to the mysql server ") ;

        mysql_close( myData ) ;

        return FALSE ;

        }

        mysql_close( myData ) ;

        return TRUE ;

        }

        ---- 對其中幾個函數作簡單說明,詳細說明,可參考MySQL文檔:

        ---- 1. MYSQL *mysql_init(MYSQL *mysql)

        ---- 初始化一個類型為MYSQL的數據結構,為執行mysql_real_connect()做準備。參數

        mysql為指向該結構的指針,如果mysql為NULL,則新建并初始化一個MYSQL的數據結構。

        新建的結構將在mysql_close()中釋放。

        ---- 若成功,返回初始化的MYSQL數據結構的指針,否則返回NULL。

        ---- 2. MYSQL *mysql_real_connect(MYSQL *mysql, const char *host,

        ---- const char *user, const char *passwd, const char *db,

        ---- unsigned int port, const char *unix_socket, unsigned int client_flag)

        ---- 與MySQL數據庫引擎建立連接。在執行進一步的數據操作之前,必須保證mysql_re

        al_connect()成功返回。

        ---- 參數mysql是mysql_init()的返回值;

        ---- 參數host是運行MySQL數據庫引擎的機器的TCP/IP主機名,如為NULL則默認為“lo

        calhost”;

        ---- 參數user和passwd是MySQL數據庫的合法用戶和口令;

        聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

        文檔

        使用C連接Mysql_MySQL

        使用C連接Mysql_MySQL:一、高性能數據庫的選擇---- 在數據庫的應用開發中,常常會遇到性能和代價的之間矛盾。以作者在開發股市行情查詢和交易系統中遇到的問題為例,要在實時記錄1000多只股票每分鐘更新一次的行 情數據的同時,響應大量并發用戶的數據查詢請求。考慮到性價比和易維
        推薦度:
        標簽: 連接 開發 數據庫
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top
        主站蜘蛛池模板: 免费大香伊蕉在人线国产 | 亚洲已满18点击进入在线观看| 亚洲精品无码不卡在线播放HE| 国产天堂亚洲国产碰碰| 小说区亚洲自拍另类| 国产三级在线观看免费| 亚洲av永久综合在线观看尤物| 美女视频黄a视频全免费| 亚洲mv国产精品mv日本mv| 亚洲乱码一区二区三区在线观看 | 午夜小视频免费观看| 国产成人亚洲综合一区| 女人毛片a级大学毛片免费| 亚洲乱色熟女一区二区三区蜜臀| 嫩草视频在线免费观看| 国产亚洲情侣久久精品| 亚洲中文字幕视频国产| 国产福利电影一区二区三区,免费久久久久久久精 | 麻豆狠色伊人亚洲综合网站| 欧美最猛性xxxxx免费| 亚洲av成人一区二区三区观看在线| 免费人成网站在线播放| 最新亚洲成av人免费看| 久久综合亚洲色HEZYO社区| 免费无码精品黄AV电影| 一级黄色免费毛片| 亚洲综合一区二区国产精品| 中文字幕影片免费在线观看| 国产精品亚洲专区在线播放| 狠狠亚洲婷婷综合色香五月排名 | 国产男女猛烈无遮挡免费视频 | 91久久成人免费| 国产精品亚洲AV三区| 亚洲熟妇av一区二区三区| 91精品免费不卡在线观看| 亚洲欧美熟妇综合久久久久| 亚洲国产精品毛片av不卡在线| 无码免费一区二区三区免费播放| 亚洲依依成人精品| 亚洲精品无码激情AV| 久久国产免费观看精品3|