1、下載mysql
一、進入官網:http://www.mysql.com/ sql
二、點開數據庫
三、拉到下面編程
四、點開服務器
五、點開紅字「這裏下載服務器」左邊的測試
六、拉到下面
fetch
七、點擊你須要的,建議點第一個。spa
八、拉到下面
指針
九、點擊開始下載 mysql-5.7.10-win32.zip。code
十、點開 4 中紅字標示「這裏下載編程所需的頭文件及連接庫」左邊的
十一、找到並點開
十二、拉到頁面中間位置
1三、如下同 七、八、9,建議點第三個,開始下載 mysql-connector-c-6.1.6-win32.zip。
注意版本要一致:要麼都是 32-bit,要麼都是 64-bit。
2、精簡
一、mysql-5.7.10-win32.zip 中僅保留 bin 和 share 兩個子目錄,其餘子目錄及文件所有刪除。
二、mysql-5.7.10-win32\bin 目錄下僅保留 mysqld.exe、mysqladmin.exe和 mysql.exe 三個文件,其餘子目錄及文件所有刪除。
三、mysql-5.7.10-win32\share 目錄下僅保留 charsets 和 english 兩個子目錄,其餘子目錄及文件所有刪除。
四、mysql-connector-c-6.1.6-win32.zip 中僅保留 include 和 lib 兩個子目錄,其餘子目錄及文件所有刪除。
五、mysql-connector-c-6.1.6-win32\lib 目錄下保留 libmysql.dll 和 libmysql.lib 兩個文件,其餘子目錄及文件所有刪除。
精簡後的目錄結構以下:
mysql-5.7.10-win32
| -- bin
| |-- mysql.exe
| |-- mysqladmin.exe
| |-- mysqld.exe
| -- share
|-- charsets
| |-- *.*
|-- english
|-- *.*
mysql-connector-c-6.1.6-win32
|-- include
| |-- mysql
| | |-- *.*
| |-- *.*
| -- lib
|-- libmysql.dll
|-- libmysql.lib
3、安裝
一、解壓 mysql-5.7.10-win32.zip,路徑中不要出現漢字。
二、以管理員權限啓動 cmd,並進入到 mysql\bin 目錄。
三、初始化:mysqld --initialize-insecure --user=root
四、安裝服務:mysqld install
五、啓動服務:net start mysql
六、設置密碼:mysqladmin -u root password 密碼
七、建議把服務裏 MySQL 的啓動類型從自動設爲手動,把第5步作個批處理文件。須要的時候右鍵 .bat 文件以管理員身份運行。
4、卸載
一、中止服務:net stop mysql
二、移除服務:mysqld remove
三、刪掉 mysql 目錄
5、GCC(MinGW64)編程
一、將 mysql-connector-gcc-6.1.6-win32 目錄下的 include 和 lib 兩個子目錄拷貝到 MinGW 的 32 位安裝目錄下 MinGW\i686-w64-mingw32,同名文件夾合併便可。
二、把 lib 子目錄中 libmysql.dll 文件再拷貝一份到 C:\Windows\SysWOW64 目錄下。
6、示例
/* 編譯: * gcc -o TestMySQL TestMySQL.c -lmysql */ #include <string.h> #include <stdio.h> #include "mysql.h" int main() { char szHost[] = "localhost"; char szUser[] = "root"; char szPasswd[] = "root"; char szDB[] = "study1"; char szTable[] = "T_Pet"; char szQuery[1024]; // SQL語句,單條記錄最大8000字節 MYSQL mysql, *pmysql; // 數據庫鏈接的對象及其指針 MYSQL_RES *res; // 結果集 MYSQL_ROW row; // 結果集中的一行數據 unsigned int nFields; // 結果集中的字段數 unsigned int nRows; // 結果集中的行數 unsigned int i, j; // 初始化MYSQL對象 mysql_init(&mysql); // 鏈接服務器 pmysql = mysql_real_connect(&mysql, szHost, szUser, szPasswd, NULL, 0, NULL, 0); if(pmysql == NULL) { printf("Couldn't connect to host. (%s)\n", mysql_error(&mysql)); return 1; } // 建立庫 sprintf(szQuery, "create database if not exists %s", szDB); if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0) { printf("Create databse failed. (%s)\n", mysql_error(pmysql)); return 1; } // 選擇庫 if(mysql_select_db(pmysql, szDB) != 0) { printf("Select databse failed. (%s)\n", mysql_error(pmysql)); return 1; } // 建立表 sprintf(szQuery, "create table if not exists %s (ID int primary key not NULL auto_increment, \ Name varchar(20), \ Owner varchar(20), \ Species varchar(20) not NULL, \ Sex char(2) not NULL default 'f', \ Birthday date not NULL, Deathday date) \ engine=MYISAM default charset=UTF8", szTable); // engine=InnoDB 時每次 auto_increment 會跳加 8,緣由不明。 if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0) { printf("Create table failed. (%s)\n", mysql_error(pmysql)); return 1; } // 插入數據 sprintf(szQuery, "load data LOCAL INFILE 'pet.txt' into table %s fields \ terminated by '\\t' lines terminated by '\\r\\n' \ (Name, Owner, Species, Sex, Birthday, Deathday)", szTable); if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0) { printf("Load data failed. (%s)\n", mysql_error(pmysql)); return 1; } // 查詢表頭 sprintf(szQuery, "select COLUMN_NAME from information_schema.COLUMNS where table_name = '%s' \ and table_schema = '%s'", szTable, szDB); if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0) { printf("Query failed. (%s)\n", mysql_error(pmysql)); return 1; } res = mysql_store_result(pmysql); if(res == NULL) { printf("Couldn't get result. (%s)\n", mysql_error(pmysql)); return 1; } while((row = mysql_fetch_row(res)) != NULL) printf("%-20s", row[0]); printf("\n"); // 查詢全表數據 sprintf(szQuery, "select * from %s", szTable); if(mysql_real_query(pmysql, szQuery, strlen(szQuery)) != 0) { printf("Query failed. (%s)\n", mysql_error(pmysql)); return 1; } res = mysql_store_result(pmysql); if (res == NULL) { printf("Couldn't get result. (%s)\n", mysql_error(pmysql)); return 1; } nRows = mysql_num_rows(res); nFields = mysql_num_fields(res); for(i=0; i<nRows; i++) { row = mysql_fetch_row(res); for(j=0; j<nFields; j++) printf("%-20s", row[j] ? row[j] : ""); printf("\n"); } // 清理 mysql_free_result(res); mysql_close(pmysql); return 0; }
pet.txt 是抄來的(中間分隔符不是空格,是 Tab)
Fluffy Harold cat f 1993-02-04 Claws Gwen cat m 1994-03-17 Buffy Harold dog f 1989-05-13 Fang Benny dog m 1990-08-27 Bowser Diane dog m 1979-08-31 1995-07-29 Chirpy Gwen bird f 1998-09-11 Whistler Gwen bird f 1997-12-09 Slim Benny snake m 1996-04-29
本文僅在 mysql_5.7.10-win32 + mysql-connector-c-6.1.6-win32 和 MinGW_w64-i686-5.3.0-release-posix-dwarf-rt_v4-rev0 下測試經過。