<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
        當前位置: 首頁 - 科技 - 知識百科 - 正文

        MySQL簡介、安裝、函數(shù)接口和LinuxCC++操作MySQL實例詳解

        來源:懂視網(wǎng) 責編:小采 時間:2020-11-09 08:27:15
        文檔

        MySQL簡介、安裝、函數(shù)接口和LinuxCC++操作MySQL實例詳解

        MySQL簡介、安裝、函數(shù)接口和LinuxCC++操作MySQL實例詳解:1.MySQL數(shù)據(jù)庫簡介 MySQL是一個開源碼的小型關系數(shù)據(jù)庫管理系統(tǒng),體積小,速度快,總體成本低,開源。MySQL有以下特性: (1) 使用C和C編寫,并使用了多種編譯器進行測試,保證源碼的可移植性。 (2) 支持多線程,利用CPU資源,支持多用戶。 (3) 可以處理擁
        推薦度:
        導讀MySQL簡介、安裝、函數(shù)接口和LinuxCC++操作MySQL實例詳解:1.MySQL數(shù)據(jù)庫簡介 MySQL是一個開源碼的小型關系數(shù)據(jù)庫管理系統(tǒng),體積小,速度快,總體成本低,開源。MySQL有以下特性: (1) 使用C和C編寫,并使用了多種編譯器進行測試,保證源碼的可移植性。 (2) 支持多線程,利用CPU資源,支持多用戶。 (3) 可以處理擁

        2. MySQL數(shù)據(jù)庫的安裝 安裝MySQL數(shù)據(jù)庫需要三個軟件包:

        (1)服務器

        (2)客戶端

        (3) 開發(fā)庫-如果用C或C語言開發(fā),就得安裝開發(fā)庫。

        MySQL-server-5.5.8-1.rhel5.i386.rpm

        MySQL-client-5.5.8-1.rhel5.i386.rpm

        MySQL-devel-5.5.8-1.rhel5.i386.rpm 在Linux下用rpm -ivh 安裝即可。

        3. MySQL的相關目錄

        /usr/bin MySQL客戶端程序或腳本

        /usr/sbin mysqld服務器相關程序

        /var/lib/mysql 日志文件,數(shù)據(jù)庫數(shù)據(jù)文件存放目錄

        /usr/share/doc/packages 使用手冊,開發(fā)文檔存放目錄

        /usr/include/mysql 接口函數(shù)庫頭文件存放目錄

        /usr/lib/mysql 接口函數(shù)動態(tài)鏈接庫存放目錄

        /usr/share/mysql 錯誤消息和字符集文件存放目錄

        /usr/share/sql-bench 基本程序存放目錄

        4. MySQL數(shù)據(jù)庫的基本操作

        (1)啟動MySQL服務器 service mysql start

        (2) 停止MySQL服務器 service mysql stop

        (3)root用戶指的是MySQL數(shù)據(jù)庫下的root目錄而不是Linux下的root用戶

        為root用戶添加密碼: mysqladmin -u root password 123 //為root用戶添加了新密碼123

        修改root用戶密碼為234: mysqladmin -u root -p password 234

        Enter password:

        或者是: mysqladmin -u root -p password

        Enter password:

        New password:

        Confirm new password:

        (4)建立數(shù)據(jù)庫和表

        首先進入用戶下,如在root用戶下建立一個db_record的數(shù)據(jù)庫: mysql -u root -p

        Enter password:

        create database db_record

        然后切換到當前數(shù)據(jù)庫下,建立表: use db_record create table friends ( name Char(15),telephone VarChar(20));

        最后向表中插入數(shù)據(jù) insert into friends (name,telephone) Values ("john","222");

        查詢: select * from friends;

        (5)建立,刪除用戶及授權

        insert into mysql.user(Host,User,Password) values("localhost","min",password("123"));

        flush privileges; //刷新權限列表

        grant all privileges on tree.* to min@localhost identified by '123'; //授權min用戶擁有tree數(shù)據(jù)庫的所有權

        也可以: grant select, insert,update,delete on db_record.* to min@localhost identified by '123';

        刪除用戶: 將該用戶的記錄從MySQL數(shù)據(jù)庫刪除:

        use mysql //切換數(shù)據(jù)庫

        delete from user where user='min' and host='localhost'; //刪除min用戶的記錄

        flush privileges; //刷新權限

        5. C語言操作MySQL數(shù)據(jù)庫

        步驟:

        (1)初始化MySQL庫,庫可以是mysqlclient C客戶端庫,或mysqld嵌入式服務器庫,函數(shù) mysql_library_init(),對于與客戶端鏈接的應用程序,提供了改進內存管理的功能。

        (2)初始化連接處理程序 mysql_init();主要是用來初始化數(shù)據(jù)庫標識符,為連接準備

        (3)連接到MySQL服務器,mysql_real_connect()函數(shù)。

        (4) 調用 mysql_close()關閉與MySQL服務器的連接

        (5)調用mysql_library_end()函數(shù)結束MySQL庫的使用,包括釋放內存,防止內存泄露等操作。

        下面是用C語言操作MySQL數(shù)據(jù)庫的例子:

        /**
        1.連接與查詢MySQL數(shù)據(jù)庫
        連接MySQ數(shù)據(jù)庫步驟:
        (1) 調用mysql_library_init()初始化MySQL數(shù)據(jù)庫,提供初始化數(shù)據(jù)庫管理,對于與客戶端鏈接的應用程序,提供了改進的內存管理功能
        (2)mysql_init()初始化連接處理程序,并調用mysql_real_connect()函數(shù)連接到MySQL服務器
        (3)mysql_close()函數(shù)關閉與MySQL服務器的連接
        (4)mysql_libary_end函數(shù)結束MySQL庫的使用,包括釋放內存等操作
        mysql_library_init(int argc,char**argv,char**groups)//用來接收應用程序傳遞的參數(shù),如果應用程序不傳遞參數(shù),那么argc=0,argv指針數(shù)組中的第一個參數(shù)是應用程序名
        groups是以NULL為終結的字符串列表中選擇了選項文件中的活動的groups,groups也可以為NULL
        mysql_init(MYSQL*mysql)傳遞的參數(shù)是數(shù)據(jù)庫標識符,用于分配或初始化與mysql_real_connect相適應的MYSQL對象,如果mysql的實際參數(shù)為NULL指針,將分配初始化新對象,否則初始化對象,并返回對象的地址
        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 long client_flag)
        //嘗試與運行在主機上的MYSQL數(shù)據(jù)庫引擎建立連接
        //第一個參數(shù)是可用的MYSQL結構地址,host必須為主機名或ip,如果為NULL或localhost被視為本地主機,user為用戶名,passwd為密碼,db是數(shù)據(jù)庫名,port為端口號,unix_socket為應使用的套接字,client_flag參數(shù)È通常為0
        mysql_close(MYSQL*mysql)//關閉連接,釋放對象的內存空間
        mysql_library_end()如果不調用該函數(shù),可能造成內存泄露
        
        2.MySQL函數(shù)使用
        查詢MYSQL數(shù)據(jù)庫: int mysql_query(MYSQL*mysql,const char* query)
         int mysql_real_query(MYSQL *mysql,const char* query,unsinged long length)
        //mysql_query函數(shù)是以NULL為終結的字符串查詢指向的SQL查詢,不應該為語句加中;或/g
        //而mysql_real_query是以計數(shù)字符串為終結的查詢
        如果查詢字符串包含二進制數(shù)據(jù),只能用mysql_real_query,因為二進制數(shù)據(jù)可能包含/0,導致計算字符串的長度不正確
        mysql_real_query比mysql_query快,因為后者需要strlen計算查詢字符串的長度
        
        MYSQL_RES *mysql_store_result(MYSQL *mysql)
        MYSQL_RES *mysql_use_result(MYSQL *mysql)
        //mysql_store_result將查詢的結果集全部讀取到客戶端,并放于1個MYSQL_RES的結構中去,如果讀取失敗將返回NULL指針
        //mysql_use_result函數(shù)是初始化結果集檢索,而不是將數(shù)據(jù)讀取到客戶端,它必須通過mysql_fetch_row()函數(shù)對每一行進行檢索
        //與mysql_store_result相比,每次只讀取一行,所以速度快,而且不用緩存,內存占用少,僅對當前行與通信緩沖區(qū)分配內存即可
        MYSQL_ROW mysql_fetch_row(MYSQL_RES*result)//實際檢索來自服務器的行,檢索結果集的下一行
        unsigned long *mysql_fetch_lengths(MYSQL_RES *result)//用來返回當前行中的列的長度,該長度有助于信息的優(yōu)化,能避免用strlen函數(shù),對于包含二數(shù)據(jù)的結果集,只能用這個函數(shù)
        void mysql_free_result(MYSQL_RES*result) 函數(shù)釋放為mysql_store_result,mysql_use_result分配的結果集內存
        
        mysql_store_result把所有查詢的結果都返回給了客戶端,不僅能連續(xù)訪問查詢結果,還能用mysql_row_seek()函數(shù)在結果集中向前或向后移動、
        還可以調用 mysql_num_rows()來發(fā)現(xiàn)有多少行
        另一方面,如果數(shù)據(jù)很大,可能造成內存溢出
        mysql_use_result客戶端用于保存查詢結果集的內存較少,每次只返回一條,所以速度比前者快
        但不能隨機訪問結果集,只能順序存取,也不能知道查詢結構的總行數(shù)
        必須快速的處理查詢結構,否則影響服務器的性能,因為查詢操作的會話依然存在
        **/
        //gcc -g -o mysql mysql1.c -I/usr/include/mysql -L/usr/lib -lmysqlclient -lpthread -lm -lrt -ldl
        //$(mysql_config --cflags) $(mysql_config --libs)
        
        #include 
        #include 
        #include 
        #include 
        static char* server_groups[]={"embedded","server","this_program_server",(char*)NULL};
        int main(){
        
        MYSQL mysql;
        MYSQL_RES *res;
        MYSQL_ROW row;
        char sqlcmd[200];
        int t,r;
        mysql_library_init(0,NULL,server_groups);//初始化MYSQL數(shù)據(jù)庫
        mysql_init(&mysql);//初始化MYSQL標識符,用于連接
        if(!mysql_real_connect(&mysql,"localhost","root","root","db_record",0,NULL,0)){
         fprintf(stderr,"無法連接到數(shù)據(jù)庫,錯誤原因是:%s/n",mysql_error(&mysql));
        
        }
        else {
         puts("數(shù)據(jù)庫連接成功");
        //首先向數(shù)據(jù)庫中插入一條記錄
         sprintf(sqlcmd,"%s","insert into friends (name,telephone) Values ('xx','xx')");
         mysql_query(&mysql,sqlcmd);
         sprintf(sqlcmd,"%s","select * from friends");
         t=mysql_real_query(&mysql,sqlcmd,(unsigned int)strlen(sqlcmd));
        
         if(t){
         printf("查詢數(shù)據(jù)庫失敗%s/n",mysql_error(&mysql));
        }
        else {
        res=mysql_store_result(&mysql);//返回查詢的全部結果集
        while(row=mysql_fetch_row(res)){//mysql_fetch_row取結果集的下一行
         for(t=0;t
        gcc -g -o mysql mysql1.c -I/usr/include/mysql -L/usr/lib -lmysqlclient -lpthread -lm -lrt -ldl
        
        也可以: gcc -g -o mysql mysql.c $(mysql_config --cflags) $(mysql_config --libs)
        
        解釋:
        (1) mysql_config --cflags 尋找mysql編譯相關的頭文件等信息。
        (2) mysql_config --libs 尋找mysql編譯所需要的庫函數(shù)。
        (3) -L/usr/lib 指出靜態(tài)庫尋找的路徑。在這里也可以不寫,因為系統(tǒng)會去默認的/lib,/usr/lib去尋找?guī)旌瘮?shù)。如果libmysqlclient.a在/usr/lib/mysql下,那么-L/usr/lib/mysql 這個目錄。
        (4)非標準的庫函數(shù),鏈接時用-lmysqlclient.原庫名為libmysqlclient.a去掉lib和.a。
        (5) -I是包含頭文件等信息,及include .
        (6) 動態(tài)鏈接庫的尋找順序:
        a. LD_LIBRARY_PATH設置的目錄下.
        b. /etc/ld.so.conf 加到這個文件中的目錄。
        c. 默認的 /usr/lib,/lib目錄下。
        
        (7)頭文件的尋找順序
        a. -I所指定的目錄中去尋找
        b.gcc的環(huán)境變量指定的目錄
        C_INCLUDE_PATH, CPLUS_INCLUDE_PATH, OBJC_INCLUDE_PATH
        c. /usr/include /usr/local/include 等目錄下尋找。
        (8)靜態(tài)庫的尋找順序
        a. -L所指定的靜態(tài)庫尋找路徑
        b.gcc環(huán)境變量LIBRARY_PATH
        c. /lib ,/usr/lib,/usr/local/lib
        
        如果MySQL數(shù)據(jù)庫啟動不起來,可以先執(zhí)行killall mysqld ,然后再用service mysql start試試。
        關于MySQL數(shù)據(jù)庫的基本操作就總結到這里了。
        http://blog.csdn.net/chenjin_zhong/article/details/6115205

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

        文檔

        MySQL簡介、安裝、函數(shù)接口和LinuxCC++操作MySQL實例詳解

        MySQL簡介、安裝、函數(shù)接口和LinuxCC++操作MySQL實例詳解:1.MySQL數(shù)據(jù)庫簡介 MySQL是一個開源碼的小型關系數(shù)據(jù)庫管理系統(tǒng),體積小,速度快,總體成本低,開源。MySQL有以下特性: (1) 使用C和C編寫,并使用了多種編譯器進行測試,保證源碼的可移植性。 (2) 支持多線程,利用CPU資源,支持多用戶。 (3) 可以處理擁
        推薦度:
        標簽: 操作 安裝 接口
        • 熱門焦點

        最新推薦

        猜你喜歡

        熱門推薦

        專題
        Top 主站蜘蛛池模板: 久久午夜无码免费| 免费无码一区二区| 99精品一区二区免费视频| 亚洲精品乱码久久久久久按摩| 亚洲国产成人精品青青草原| 猫咪免费人成网站在线观看| 亚洲精品自拍视频| 亚洲三级高清免费| 久久综合久久综合亚洲| 麻豆国产VA免费精品高清在线| 亚洲人成免费电影| 美女黄网站人色视频免费国产 | 日日夜夜精品免费视频| 亚洲精品无码日韩国产不卡av| 亚欧色视频在线观看免费| 亚洲国产精品综合久久久| 在线a人片天堂免费观看高清| 精品亚洲成在人线AV无码| 好男人视频在线观看免费看片| 亚洲国产熟亚洲女视频| 日本xxwwxxww在线视频免费| 国产99视频精品免费视频76| 亚洲AV无码国产精品色午友在线| 国产在线精品观看免费观看| 亚洲Aⅴ无码专区在线观看q| 思思re热免费精品视频66| 亚洲精品第一国产综合亚AV| 亚洲精品高清在线| 久久久久久国产精品免费免费男同 | 国产大片91精品免费看3| 免费福利资源站在线视频| 亚洲国产精品无码成人片久久| 成人国产网站v片免费观看| 国产精品久久久亚洲| 69av免费视频| 黄页视频在线观看免费| 久久精品国产亚洲精品2020| 日韩精品视频免费网址| 中文字幕免费不卡二区| 亚洲AV永久无码精品一福利| 亚洲AV无码欧洲AV无码网站|