C/C++ 懶人筆記 001 – Dev C + MySQL 範例程式

在 Dev C 環境下使用 MySQL 的基本功能。包含新增資料庫、新增資料表、設定primary key、新增資料、查詢資料…等等。

 

#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h>
void test()
{
         FILE *fp;
         int tt;
         MYSQL mysql;     //mysql連接
         MYSQL_RES *res;  //這個結構代表返回行的一個查詢結果集
         MYSQL_ROW row;   //一個行數據的類型安全(type-safe)的表示
         char query[300]; //查詢語句
        
          // MySQL Connect ---------------------------
          mysql_init(&mysql);
          if (!mysql_real_connect(&mysql,"localhost", "帳號", "密碼", NULL, 3306, NULL,0))
            {
               printf( "Error connecting to database%s\n",mysql_error(&mysql));
            }
          else  printf("Connected...\n");
          //MySQL 操作 -------------------------------
          //------------------------------------------
          // 1. 設置編碼 utf8
          //------------------------------------------
          sprintf(query,"SET CHARACTER SET UTF8");
          if( mysql_real_query(&mysql,query,(unsigned int)strlen(query)) )
            { 
              printf("編碼設置失敗\n"); 
            }
          else printf("編碼設定完成\n");
          //printf("這筆指令內容:\n%s\n",query);
          //------------------------------------------
          // 2. 新建新的資料庫, 名稱是 happy
          //------------------------------------------
          sprintf(query,"CREATE DATABASE happy");
          if( mysql_real_query(&mysql,query,(unsigned int)strlen(query)) )
            { 
              printf("新增happy資料庫失敗\n"); 
            }
          else printf("新增happy資料庫完成\n");
          //printf("這筆指令內容:\n%s\n",query);
          //------------------------------------------
          // 3. 加入新的資料表
          //------------------------------------------
          sprintf(query,"USE happy");//使用資料庫
          if(mysql_real_query(&mysql,query,(unsigned int)strlen(query))) 
             { 
               printf("資料庫不給用,哭哭~~\n"); 
             }
          else printf("成了\n");
          sprintf(query,"CREATE TABLE happyone( aaa TIME, bbb varchar(30), ccc INT(11), ddd TINYINT(4), eee TEXT)"); 
          // 增加一個資料表,五個欄位,依序是:時間、可變長度字串、整數、短整數、文字
          if( mysql_real_query(&mysql,query,(unsigned int)strlen(query)) )
             { 
               printf("新增資料表失敗\n"); 
             }
          else printf("新增資料表完成\n");
          //printf("這筆指令內容:\n%s\n",query);
          //------------------------------------------
          // 4. 增加主鍵
          //------------------------------------------
          sprintf(query,"ALTER TABLE `happyone` ADD PRIMARY KEY (`aaa`)");
          if( mysql_real_query(&mysql,query,(unsigned int)strlen(query)) ) 
            {
              printf("資料表主鍵失敗\n"); 
            }
          else printf("資料表主鍵完成\n");
          //printf("這筆指令內容:\n%s\n",query);
          //------------------------------------------
          // 5. 寫入資料
          //------------------------------------------
          sprintf(query,"INSERT INTO happyone(`aaa`,`bbb`,`ccc`, `ddd`,`eee`) VALUES('11:22:33','stringb_first',65535,-126,'There is nothing here')");
          if( mysql_real_query(&mysql,query,(unsigned int)strlen(query)) ) 
            { 
               printf("資料表填入失敗\n"); 
            }
          else printf("資料表填入完成\n");
          sprintf(query,"INSERT INTO happyone(`aaa`,`bbb`,`ccc`, `ddd`,`eee`) VALUES('22:33:44','stringb_sec','',127,'There is also nothing there')");
          if( mysql_real_query(&mysql,query,(unsigned int)strlen(query)) ) 
            { 
              printf("資料表填入失敗\n"); 
            }
          else printf("資料表填入完成\n");
          //------------------------------------------
          // 6. 查詢資料
          //------------------------------------------
          sprintf(query,"SELECT * FROM happy.happyone ORDER BY aaa"); 
          //          SELECT Column們 FROM 資料表們 ORDER BY 用來排序欄位 WHERE 特定條件
          if( mysql_real_query(&mysql,query,(unsigned int)strlen(query)) ) 
            { 
             printf("查詢失敗\n"); 
            }
          else printf("查詢完成\n");
          //------------------------------------------
          //7. 檢視查詢結果
          //------------------------------------------
          if( !( res=mysql_store_result(&mysql) ) )  // 保存查詢的結果到 res (MYSQL_RES 型態)
           {
                 printf("%s", mysql_error(&mysql));
           } 
          fp=fopen("Output.txt","w"); 
          while( (row=mysql_fetch_row(res)) ) // 每一次的 執行,都會從 res 內套出 一列 資料到 row 指標陣列 ,基本上,一列就是一筆資料
            {
                  for(tt=1;tt<=mysql_num_fields(res);tt++)
                    {
                       fprintf(fp,"| %s |",row[tt-1]); // 每一個 row[tt],都是一個指標,其所連結的字串陣列,即是一欄位之內容
                    }
                  fprintf(fp,"\n");
            }
          //printf("這筆指令內容:\n%s\n",query);
          // MySQL 查詢結果之釋放
          mysql_free_result(res);
          // MySQL Ending --------------------------------
          mysql_close(&mysql);
          fclose(fp);
}
int main()
{
    test();
    system("PAUSE");
    return 0;
}
/*
一些語句備忘:
craete database basic;
use basic;
create table basic(  no char(4)  name char(10)  id char(10));
create table 資料表名稱( 欄位1名稱  資料型態(長度)  欄位2名稱  資料型態(長度) ....)
*/

You Might Also Like

Leave a Reply

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料