亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于C語言訪問的MySQL數(shù)據(jù)庫

        2016-12-26 15:58:47張麗
        電子技術(shù)與軟件工程 2016年22期
        關(guān)鍵詞:數(shù)據(jù)庫

        摘 要

        本文重點介紹了MySQL數(shù)據(jù)庫的數(shù)據(jù)操作,并研究了在C語言中操作MySQL數(shù)據(jù)庫的基本API,包括MySQL庫中表的基本定義和常見的數(shù)據(jù)庫操作如增刪改查、聯(lián)合查詢等。

        【關(guān)鍵詞】C語言 數(shù)據(jù)庫 MySQL

        1 引言

        1.1 C語言

        C語言產(chǎn)生于50年前,是一種常采用的高級程序語言。基于C語言的設(shè)計采用相對簡單的編譯器,提供低級訪問內(nèi)存與語言結(jié)構(gòu),能有效地將程序語言映射到機器指令,并提供各種運行支持。C語言常用于操作系統(tǒng)、編譯器、數(shù)據(jù)庫為代表的匯編語言編寫的應(yīng)用程序設(shè)計等。C語言基于其靈活、跨平臺、高效等特點,從微控制器嵌入到超級計算機開發(fā)等均被廣泛采用。

        C程序的開發(fā)通常需要預(yù)編譯、編譯、鏈接、運行等階段。預(yù)編譯采用宏替換源碼;編譯過程將源碼翻譯成二進(jìn)制機器碼;鏈接過程將程序采用的靜態(tài)、動態(tài)庫進(jìn)行連接,生成二進(jìn)制可執(zhí)行程序,并在運行階段直接運行。

        1.2 MySQL數(shù)據(jù)庫

        現(xiàn)代常用的數(shù)據(jù)庫分為關(guān)系型數(shù)據(jù)庫、分布式數(shù)據(jù)庫以及NOSQL等幾種類型。目前的OLTP(On-Line Transaction Processing,即聯(lián)機數(shù)據(jù)處理過程)中多采用以MySQL為代表的關(guān)系型數(shù)據(jù)庫。

        MySQL是一個由瑞典MySQLAB公司開發(fā)的開源的關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS),采用通用的結(jié)構(gòu)化查詢語言(Structured Query Language),使用C與C++語言編寫,使用yacc SQL解析器。MySQL源代碼采用GNU通用公共許可證的條款(即開源條款),更受各國開發(fā)者的青睞。MySQL的數(shù)據(jù)操作執(zhí)行快速穩(wěn)定、開發(fā)接口豐富、開發(fā)文檔完善等,被廣泛應(yīng)用于以Web應(yīng)用為代表的程序開發(fā)與應(yīng)用。

        2 數(shù)據(jù)庫相關(guān)操作

        2.1 連接 MySQL

        數(shù)據(jù)庫連接的命令為“ mysql -h 服務(wù)器Ip地址 -u 用戶名-p 密碼 ”。假設(shè)遠(yuǎn)程主機的IP 為:10.0.0.1,用戶名為root,密碼為psd。則需要輸入以下命令行:

        mysql –h10.0.0.1 -uroot –ppsd

        2.2 創(chuàng)建數(shù)據(jù)庫

        數(shù)據(jù)庫的創(chuàng)建命令為(此處DBTest為數(shù)據(jù)庫名):

        Create database DBTest;

        顯示數(shù)據(jù)庫列表命令為(此處DBTest為數(shù)據(jù)庫名):

        show databases DBTest;

        使用數(shù)據(jù)庫命令為(此處DBTest為數(shù)據(jù)庫名):

        use DBTest;

        2.3 建立數(shù)據(jù)表

        在當(dāng)前使用的數(shù)據(jù)庫建立數(shù)據(jù)表(此處teacher為表名):

        create table teacher

        ( id varchar(10) not null primary key, //屬性名—ID、長度10的可變字符串型、不可為空、主鍵name varchar(10) not null, //屬性名—name、長度10的可變字符串 不可為空year date ); //屬性名-year 日期

        3 C程序訪問MySQL數(shù)據(jù)庫

        3.1 相關(guān)數(shù)據(jù)結(jié)構(gòu)定義

        定義查詢命令的結(jié)構(gòu)體類型:

        typedef struct st_mysql {

        } MYSQL;

        定義返回數(shù)據(jù)的結(jié)構(gòu)體類型:

        typedef struct st_mysql_res {

        } MYSQL_RES;

        3.2 相關(guān)函數(shù)

        C語言訪問MYSQL數(shù)據(jù)庫的相關(guān)函數(shù)如表1所示。

        MYSQL *mysql_init(MYSQL *mysql) 初始化MYSQL實例

        Void mysql_close(MYSQL *mysql) 關(guān)閉MYSQL實例,釋放內(nèi)存

        Int mysql_query(MYSQL *mysql,const char *query) 對指定連接進(jìn)行查詢。成功返回0,出錯返回非0值

        MYSQL_RES *musql_store_result(MYSQL *handle) 返回查詢的結(jié)果

        MYSQL_ROW mysql_fetch_row(MYSQL_RES *res) 返回第一行查詢的結(jié)果

        3.3 C語言訪問 MySQL 的程序?qū)嵗?/p>

        #include

        #include

        #include

        //定義數(shù)據(jù)庫查詢宏(此處根據(jù)參數(shù)userid查詢teacher表的name year屬性)

        #define SELECT_QUERY "select name,year from teacher where userid = %d"

        //main函數(shù),C語言執(zhí)行的入口

        int main(int argc, char **argv) {

        //定義使用的變量

        //調(diào)用mysql_init方法,初始化連接實例

        mysql_init(&mysql);

        //向數(shù)據(jù)庫插入數(shù)據(jù)(insert操作),如遇異常則返回

        res = mysql_query (&my_connection, "INSERT INTO teacher(name,year) VALUES(Ana, 1989)");

        if (res)

        fprintf (stderr, "Insert error %d: %s\n", mysql_errno (&my_connection), mysql_error(&my_connection));

        }

        //修改數(shù)據(jù)(update操作),如遇異常則返回

        res = mysql_query (&my_connection, "update teacher set year= 1999 where name =Peter");

        if (res)

        fprintf (stderr, "Update error %d: %s\n", mysql_errno (&my_connection), mysql_error(&my_connection));

        }

        sprintf(buf,SELECT_QUERY,atoi(argv[1]));

        //查詢數(shù)據(jù)行(select操作)

        if(mysql_query(handle,buf)) {

        fprintf(stderr,"Query failed (%s)\n",mysql_error(handle)); exit(1);

        }

        //緩存結(jié)果

        If (! (result=mysql_store_result(handle))) {

        fprintf(stderr,"Get result from %s failed\n", mysql_error (handle));

        exit(1);

        }

        printf("number of fields returned: %d\n",mysql_num_fields (result));

        query ok !

        4 結(jié)語

        用C語言訪問 MySQL 在實際 Web 應(yīng)用中并不多見,但是有時候為了獲取更高訪問性能,會直接用C語言來開發(fā)相關(guān)的數(shù)據(jù)庫訪問模塊,這樣可以更好地利用服務(wù)器的資源,并且使用C語言具有更好的安全性,所以用C語言訪問MySQL數(shù)據(jù)庫相比其他語言雖然在程序開發(fā)上成本高一些,但是具備更好的性能和安全性。

        參考文獻(xiàn)

        [1]吳垠,余瑾,郭磊等.MySQL數(shù)據(jù)庫在嵌入式Linux平臺上的移植和應(yīng)用[J].電子技術(shù),2011,38(07):12-13.

        [2]趙洪明.MySQL中訪問數(shù)據(jù)庫的程序設(shè)計[J].黃石高等專科學(xué)校學(xué)報,2012,18(01):10-12.

        [3]李達(dá).基于知識庫的高分辨率遙感影像分割系統(tǒng)的設(shè)計與實現(xiàn)[D].太原:山西大學(xué),2014.

        作者簡介

        張麗(1981-)女,漢族,山西省襄汾縣人。碩士學(xué)位。現(xiàn)為山西管理職業(yè)學(xué)院講師。主要研究方向為計算機語言。

        作者單位

        山西管理職業(yè)學(xué)院 山西省臨汾市 041000

        猜你喜歡
        數(shù)據(jù)庫
        數(shù)據(jù)庫
        財經(jīng)(2017年15期)2017-07-03 22:40:49
        數(shù)據(jù)庫
        財經(jīng)(2017年2期)2017-03-10 14:35:35
        數(shù)據(jù)庫
        財經(jīng)(2016年15期)2016-06-03 07:38:02
        數(shù)據(jù)庫
        財經(jīng)(2016年3期)2016-03-07 07:44:46
        數(shù)據(jù)庫
        財經(jīng)(2016年6期)2016-02-24 07:41:51
        數(shù)據(jù)庫
        財經(jīng)(2010年20期)2010-10-19 01:48:32
        深夜黄色刺激影片在线免费观看| 欧美激情五月| 最新亚洲无码网站| 天堂av国产一区二区熟女人妻| 中国一级特黄真人片久久| 亚洲人成人网站在线观看| 亚洲人成电影在线无码| 久久精品女人天堂AV一个| 视频女同久久久一区二区| 粗大的内捧猛烈进出小视频| 亚洲aⅴ无码成人网站国产app| 亚洲aⅴ久久久噜噜噜噜| 国产自拍成人在线免费视频| 美女扒开大腿让男人桶| 色老头在线一区二区三区| 精品亚洲女同一区二区| 9l国产自产一区二区三区| 西川结衣中文字幕在线| 成人免费看www网址入口| 婷婷色综合成人成人网小说| 国产成人高清视频在线观看免费| 伦伦影院午夜理论片| 国产精品美女一区二区三区| 国产亚洲欧洲三级片A级| 国产熟女白浆精品视频二| 免费不卡在线观看av| 日产精品久久久久久久| 美腿丝袜av在线播放| 福利视频一区二区三区| av人摸人人人澡人人超碰妓女| 麻豆久久五月国产综合| 风流少妇一区二区三区91| 亚洲无av在线中文字幕| 躁躁躁日日躁| 激情人妻网址| 亚洲国产综合久久天堂| 边啃奶头边躁狠狠躁| 国产亚洲精品综合一区| 永久免费观看的黄网站在线| 中文天堂国产最新| 爱我久久国产精品|