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名稱 資料型態(長度) ....) */
Leave a Reply