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

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

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

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

             

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

             

            4、mysql數(shù)據(jù)庫操作實(shí)例。
               (1)創(chuàng)建班級數(shù)據(jù)庫
                  創(chuàng)建數(shù)據(jù)庫的命令式create databases dbname,其中dbname為數(shù)據(jù)庫名,例如當(dāng)前要創(chuàng)建的數(shù)據(jù)庫名為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)不在我們的班級class里面了,所以需要把他從class刪除。
                  mysql->delete from student where name = 'Tom';
               (6)更新其中一條記錄
                  班級class中還存在一種情況,就是有學(xué)生要改名了,比如Lee要改名為Tony了。具體的sql語句如下:
                  mysql->update student set name = 'Tony' where name = 'Lee';
               (7)刪除數(shù)據(jù)庫
                  如果學(xué)生畢業(yè),那么我們這個班級就沒有存在的必要了,這是就可以刪除掉這個數(shù)據(jù)庫class了。
                  刪除的步驟如下:
                  a、刪除所有的數(shù)據(jù)表,SQL語句為:
                  mysql->drop table class;
                  b、刪除數(shù)據(jù)庫,SQL語句為:
                  mysql->delete database class;
            5、Mysql數(shù)據(jù)庫連接之C語言API
               首先要安裝一個包libmysql++-dev包,不然編譯代碼的時候會出現(xiàn)“mysql/mysql.h: No such file or directory”錯誤
               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 董三 閱讀(7995) 評論(1)  編輯 收藏 引用 所屬分類: linux

            評論

            # 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);
            這段代碼都有問題 會 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ù)  更多評論   

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(1)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            博客友

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            日韩精品久久久肉伦网站| 日产精品久久久久久久| 久久久无码人妻精品无码| 久久综合鬼色88久久精品综合自在自线噜噜| 久久久久久久久久久久中文字幕 | 久久久一本精品99久久精品88| 久久久久亚洲精品无码网址| 99久久99久久精品国产| 国产精品美女久久久m| 国产亚洲综合久久系列| 韩国免费A级毛片久久| 久久九九精品99国产精品| 色偷偷久久一区二区三区| 久久久无码一区二区三区| 久久久久免费看成人影片| 狠狠色婷婷久久一区二区三区| 国产亚洲欧美精品久久久| 久久精品水蜜桃av综合天堂 | 久久不见久久见免费视频7| 久久婷婷国产综合精品| 99久久99久久久精品齐齐| 久久精品人人槡人妻人人玩AV | 久久黄视频| 性做久久久久久久久浪潮| 久久久无码精品亚洲日韩京东传媒| 国产精品成人久久久| 国产美女亚洲精品久久久综合 | 2021久久国自产拍精品| 四虎国产精品免费久久久| 久久精品三级视频| 免费久久人人爽人人爽av| 久久精品亚洲中文字幕无码麻豆 | 久久久久亚洲AV成人网人人软件 | 奇米影视7777久久精品| 成人国内精品久久久久一区| 香蕉久久一区二区不卡无毒影院| 久久国产香蕉一区精品| 无码人妻精品一区二区三区久久 | 97精品伊人久久久大香线蕉| 国产亚洲综合久久系列| 久久天天日天天操综合伊人av|