MySQL 5.7.10 綠色版的精簡安裝與C語言編程

1、下載mysql

一、進入官網:http://www.mysql.com/ sql

二、點開數據庫


三、拉到下面編程

四、點開服務器

五、點開紅字「這裏下載服務器」左邊的測試

六、拉到下面
fetch

七、點擊你須要的,建議點第一個。spa

八、拉到下面
指針

九、點擊開始下載 mysql-5.7.10-win32.zipcode

十、點開 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 下測試經過。

相關文章
相關標籤/搜索