• <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>

            lynch

            linux下使用mysql的C語言API

            系統(tǒng)環(huán)境Ubuntu 12.04

            1、安裝mysql 
               ubuntu下安裝mysql是比較簡(jiǎn)單的,直接通過apt-get安裝
            1. sudo apt-get install mysql-server-5.5  
            2、登入mysql
            1. mysql [-h host_name] [-u user_name] [-p password]
               其中參數(shù)-h后面要給出連接的數(shù)據(jù)庫(kù)的IP地址或者域名、參數(shù)-u后面要給出登錄的用戶名、參數(shù)-p表示登錄的密碼。
               有時(shí)連接本機(jī)默認(rèn)的Mysql數(shù)據(jù)庫(kù)服務(wù)器,則可以直接在命令行中輸入如下簡(jiǎn)寫形式(root用戶):
            1. mysql -u root -p
               之后,系統(tǒng)會(huì)提示你輸入root用戶的密碼
               
            3、mysql的基本命令
               在mysql中,輸入help或者?命令,即可用查看mysql支持的內(nèi)部操作命令。
               (1)顯示數(shù)據(jù)庫(kù)列表
                  顯示數(shù)據(jù)庫(kù)列表命令比較簡(jiǎn)單,直接輸入show databases;即可。
                  
               (2)選擇一個(gè)數(shù)據(jù)庫(kù)
                  選擇一個(gè)數(shù)據(jù)庫(kù)比較簡(jiǎn)單,使用use dbname,其中dbname為要選擇的數(shù)據(jù)庫(kù)名字。比如,這里我們選擇test數(shù)據(jù)庫(kù):
                  
               (3)查看一個(gè)數(shù)據(jù)庫(kù)中的所有表
                  通過show tables,可以查看一個(gè)數(shù)據(jù)庫(kù)中所有的數(shù)據(jù)庫(kù)表。

                  查看Mysql表結(jié)構(gòu)的命令,如下:

                  show columns from 表名;
                  describe 表名;
                  desc 表名;
                  show create table 表名;(查看create腳本)
               (4)退出
                  簡(jiǎn)單的命令,quit;
               需要注意的是,每個(gè)命令后面需要加上分號(hào)“;”,因?yàn)榉痔?hào)表示一個(gè)事務(wù)的結(jié)束。

                (5) mysqldump工具備份和恢復(fù)

             

                     幾個(gè)常用用例:
                     1.導(dǎo)出整個(gè)數(shù)據(jù)庫(kù)
                      mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 > 導(dǎo)出的文件名    
                      mysqldump -u wcnc -p smgp_apps_wcnc > wcnc.sql
                     2.導(dǎo)出一個(gè)表
                      mysqldump -u 用戶名 -p 數(shù)據(jù)庫(kù)名 表名> 導(dǎo)出的文件名
                      mysqldump -u wcnc -p smgp_apps_wcnc users> wcnc_users.sql
                     3.導(dǎo)出一個(gè)數(shù)據(jù)庫(kù)結(jié)構(gòu)
                       mysqldump -u wcnc -p -d --add-drop-table smgp_apps_wcnc >/home/dk/wcnc_db.sql
                      -d 沒有數(shù)據(jù) --add-drop-table 在每個(gè)create語句之前增加一個(gè)drop table 
                     4.導(dǎo)入數(shù)據(jù)庫(kù)
                       常用source 命令
                       進(jìn)入mysql數(shù)據(jù)庫(kù)控制臺(tái),
                       如mysql -u root -p 
              
                       mysql>use 數(shù)據(jù)庫(kù)
                       然后使用source命令,后面參數(shù)為腳本文件(如這里用到的.sql)
                       mysql>source  /home/wcnc_db.sql

             

            4、mysql數(shù)據(jù)庫(kù)操作實(shí)例。
               (1)創(chuàng)建班級(jí)數(shù)據(jù)庫(kù)
                  創(chuàng)建數(shù)據(jù)庫(kù)的命令式create databases dbname,其中dbname為數(shù)據(jù)庫(kù)名,例如當(dāng)前要?jiǎng)?chuàng)建的數(shù)據(jù)庫(kù)名為class,因此需要輸入下面的命令:

            1.    mysq->create database class;
                  
               (2)創(chuàng)建學(xué)生信息表
            1.    mysql>use class;
            2.    mysql>create table student (nid INT UNIQUE,name VARCHAR(20),age int);

             

                  
               (3)插入基本數(shù)據(jù)
                  向已經(jīng)創(chuàng)建好的數(shù)據(jù)表中插入3條基本記錄,SQL語句如下:
            1.    mysql->insert into student values(100, 'Lee', 16);
            2.    mysql->insert into student values(101, 'Tom', 17);
            3.    mysql->insert into student values(102, 'Harry', 15);
                (4)查詢?nèi)繑?shù)據(jù)
                  利用select語句查詢?nèi)坑涗洝?br style="word-wrap: break-word" />
            1.    mysql->select * from student;
                  
               (5)刪除其中一條記錄
                  這里我們假設(shè)Tom同學(xué)轉(zhuǎn)學(xué)了,那么他已經(jīng)不在我們的班級(jí)class里面了,所以需要把他從class刪除。
                  mysql->delete from student where name = 'Tom';
               (6)更新其中一條記錄
                  班級(jí)class中還存在一種情況,就是有學(xué)生要改名了,比如Lee要改名為Tony了。具體的sql語句如下:
                  mysql->update student set name = 'Tony' where name = 'Lee';
               (7)刪除數(shù)據(jù)庫(kù)
                  如果學(xué)生畢業(yè),那么我們這個(gè)班級(jí)就沒有存在的必要了,這是就可以刪除掉這個(gè)數(shù)據(jù)庫(kù)class了。
                  刪除的步驟如下:
                  a、刪除所有的數(shù)據(jù)表,SQL語句為:
                  mysql->drop table class;
                  b、刪除數(shù)據(jù)庫(kù),SQL語句為:
                  mysql->delete database class;
            5、Mysql數(shù)據(jù)庫(kù)連接之C語言API
               首先要安裝一個(gè)包libmysql++-dev包,不然編譯代碼的時(shí)候會(huì)出現(xiàn)“mysql/mysql.h: No such file or directory”錯(cuò)誤
               sudo apt-get install libmysql++-dev
                     示例代碼:
            1. #include<mysql/mysql.h>
            2. #include<stdio.h>
            3. int main()
            4. {
            5.      MYSQL mysql;
            6.      MYSQL_RES *res;
            7.      MYSQL_ROW row;
            8.      char *query = "select * from dbtablename;";
            9.      int t,r;
            10.      mysql_init(&mysql);
            11.      if(!mysql_real_connect(&mysql,"localhost","dbusername",
                                   "dbpassword","dbname",0,NULL,0))
            12.      {
            13.          printf("Error connecting to database:%s\n",mysql_error(&mysql));
            14.      }
            15.      else
            16.          printf("Connected........");
            17.  
            18.      else
            19.          printf("Connected........");
            20.      t=mysql_query(&mysql,query);
            21.      if(t)
            22.      {
            23.          printf("Error making query:%s\n",mysql_error(&mysql));
            24.      }
            25.      else
            26.      {
            27.          printf("Query made ....\n");
            28.          res = mysql_use_result(&mysql);
            29.          if(res)
            30.          {
            31.              for(r=0;r<=mysql_field_count(&mysql);r++)
            32.              {
            33.                  row = mysql_fetch_row(res);
            34.                  if(row<0) break;
            35.                  for(t=0;t<mysql_num_fields(res);t++)
            36.                      printf("%s ",row[t]);
            37.                  printf("\n");
            38.              }
            39.          }
            40.          mysql_free_result(res);
            41.      }
            42.      mysql_close(&mysql);
            43.      return 0;
            44.  }

               編譯之~注意一定要先安裝libmysql++-dev包。編譯指令:gcc c_mysql.c -lmysqlclient -o c_mysql

              運(yùn)行./c_mysql


            posted on 2012-12-15 22:54 董三 閱讀(7997) 評(píng)論(1)  編輯 收藏 引用 所屬分類: linux

            評(píng)論

            # re: linux下使用mysql的C語言API 2016-03-11 09:46 swing07

            printf("Query made ....\n");
            res = mysql_use_result(&mysql);
            if(res)
            {
            for(r=0;r<=mysql_field_count(&mysql);r++)
            {
            row = mysql_fetch_row(res);
            if(row<0) break;
            for(t=0;t<mysql_num_fields(res);t++)
            printf("%s ",row[t]);
            printf("\n");
            }
            }
            mysql_free_result(res);
            這段代碼都有問題 會(huì) Segmentation fault (core dumped)。

            需要這么改 res = mysql_store_result(&mysql);
            if(res)
            {
            printf("result mysql_field_count:%d ....\n",mysql_num_rows(res) );
            // printf("result mysql_fetch_row:%d ....\n",mysql_fetch_row(res) );
            printf("result mysql_num_fields:%d ....\n",mysql_num_fields(res) );
            for(r=0;r<mysql_num_rows(res);r++)
            {
            row = mysql_fetch_row(res);
            if(row<0) break;
            for(t=0;t<mysql_num_fields(res);t++)
            printf("%s ",row[t]);
            printf("\n");
            }
            }  回復(fù)  更多評(píng)論   

            <2012年12月>
            2526272829301
            2345678
            9101112131415
            16171819202122
            23242526272829
            303112345

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            博客友

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            亚洲va中文字幕无码久久| 久久人人爽人人爽人人片av高请 | 日韩欧美亚洲综合久久| 久久综合鬼色88久久精品综合自在自线噜噜| 日产久久强奸免费的看| 国内精品久久人妻互换| 99久久无码一区人妻| 亚洲伊人久久大香线蕉综合图片| 麻豆精品久久久一区二区| 18禁黄久久久AAA片| 青青青国产精品国产精品久久久久 | 无码人妻久久久一区二区三区| 91久久婷婷国产综合精品青草| 久久久中文字幕日本| 国产精品久久网| 亚洲乱码中文字幕久久孕妇黑人| 国产精品狼人久久久久影院| 看久久久久久a级毛片| 精品伊人久久久| 国产成人无码精品久久久久免费| 日本久久久久亚洲中字幕| 久久综合视频网站| 国产精品美女久久久久av爽| 国产精品无码久久久久久| 人妻无码精品久久亚瑟影视| 久久亚洲中文字幕精品一区| 国产成人香蕉久久久久| 精品一区二区久久久久久久网站| 日产精品久久久久久久| 久久久久久精品免费看SSS| 亚洲国产成人精品91久久久| 国产69精品久久久久99尤物| 亚洲国产精品久久| 久久精品国产亚洲沈樵| 久久久久亚洲精品天堂| 久久精品夜夜夜夜夜久久| 久久香综合精品久久伊人| 亚洲国产另类久久久精品| 蜜臀av性久久久久蜜臀aⅴ| 亚洲AV日韩精品久久久久| 久久综合九色综合网站|