999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

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

摘 要

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

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

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

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

MySQL是一個(gè)由瑞典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)程主機(jī)的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;

定義返回?cái)?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實(shí)例

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

Int mysql_query(MYSQL *mysql,const char *query) 對(duì)指定連接進(jìn)行查詢。成功返回0,出錯(cuò)返回非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方法,初始化連接實(shí)例

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

參考文獻(xiàn)

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

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

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

作者簡介

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

作者單位

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

猜你喜歡
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
兩種新的非確定數(shù)據(jù)庫上的Top-K查詢
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
數(shù)據(jù)庫
主站蜘蛛池模板: 五月婷婷亚洲综合| 无码丝袜人妻| 综合五月天网| 91精品啪在线观看国产| 91精品情国产情侣高潮对白蜜| 色吊丝av中文字幕| AV熟女乱| 午夜福利视频一区| 亚洲男女在线| 久久久久人妻精品一区三寸蜜桃| 国产呦精品一区二区三区网站| 欧美激情首页| 婷婷色婷婷| 国产午夜看片| 毛片手机在线看| 国产精品一区二区不卡的视频| 青草视频久久| 久久精品人妻中文系列| 国产成人艳妇AA视频在线| 亚洲h视频在线| lhav亚洲精品| 51国产偷自视频区视频手机观看| 亚洲日韩精品无码专区97| 一本二本三本不卡无码| 中文字幕亚洲另类天堂| 狠狠五月天中文字幕| 色成人亚洲| 国产精品专区第1页| 自拍中文字幕| 免费人成网站在线高清| 亚洲熟妇AV日韩熟妇在线| 欧美国产综合视频| 色婷婷狠狠干| www亚洲天堂| 欧美日韩资源| 538精品在线观看| 日韩免费成人| 国产爽歪歪免费视频在线观看 | 野花国产精品入口| 丁香婷婷激情网| 免费啪啪网址| 久草视频中文| 亚洲综合婷婷激情| 99精品国产自在现线观看| 97视频免费看| 国产网站免费观看| 日韩中文无码av超清| 成人福利一区二区视频在线| 亚洲午夜片| 亚洲美女视频一区| 丁香综合在线| 青青草原国产av福利网站| 中文字幕丝袜一区二区| 国产福利免费视频| 国产资源站| 亚洲一区二区三区麻豆| 国产交换配偶在线视频| 国禁国产you女视频网站| 亚洲aaa视频| 国产精品爆乳99久久| 国产手机在线观看| 欧美专区在线观看| 99偷拍视频精品一区二区| 无码一区18禁| 尤物在线观看乱码| 亚洲女人在线| 亚洲an第二区国产精品| 2021精品国产自在现线看| 911亚洲精品| 米奇精品一区二区三区| 欧美精品亚洲精品日韩专区| 久久综合伊人 六十路| 99视频只有精品| 毛片网站观看| 免费av一区二区三区在线| 色视频国产| 国产福利在线观看精品| 亚洲av无码专区久久蜜芽| 亚洲视频欧美不卡| 天堂亚洲网| 无码啪啪精品天堂浪潮av | 女人毛片a级大学毛片免费|