初学C,看到C 连接mysql的教程不是很多,遇到很多的问题,看过许多盟友的解决方法,有点模糊(对我这个菜鸟来说),下面贴出具体步骤,一起学习:

1.C连接mysql的方法:C ,C ++ ,ODBC ,java ,Net .......,这里看C的连接,首先进入mysql驱动官网下载connector/c http://dev.mysql.com/downloads/connector/ 选择C版下载

                           

c mysql 链接代码 c与mysql数据库连接_数据库

  2.C  在vc 6环境下连接mysql :下面贴出源码(看别人写的,以此作参考)



#include "stdafx.h"

#include <stdio.h>
#include <winsock2.h>
#include <mysql.h>
#include <stdlib.h>
/*数据库连接用宏*/
#define HOST "localhost"
#define USERNAME "root"
#define PASSWORD "root"
#define DATABASE "test"
void query_sql(char* sql);
int main()
{
    char *query;
    query="select * from a";
    query_sql(query);
	system("pause");
    return 0;
}
void query_sql(char* sql)
{
    MYSQL my_connection; /*这是一个数据库连接*/
    int res; /*执行sql語句后的返回标志*/
    MYSQL_RES *res_ptr; /*指向查询结果的指针*/
    MYSQL_FIELD *field; /*字段结构指针*/
    MYSQL_ROW result_row; /*按行返回的查询信息*/
    int row, column; /*查询返回的行数和列数*/
    int i, j;
    /*初始化mysql连接my_connection*/
    mysql_init(&my_connection);
    /*建立mysql连接*/
    if (NULL != mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD,
                                   DATABASE, 0, NULL, CLIENT_FOUND_ROWS))  /*连接成功*/
    {
        printf("数据库查询query_sql连接成功!\n");
        /*设置查询编码为gbk,以支持中文*/
        mysql_query(&my_connection, "set names gbk");
        res = mysql_query(&my_connection, sql);
        if (res)   /*执行失败*/
        {
            printf("Error: mysql_query !\n");
            /*关闭连接*/
            mysql_close(&my_connection);
        }
        else     /*现在就代表执行成功了*/
        {
            /*将查询的結果给res_ptr*/
            res_ptr = mysql_store_result(&my_connection);
            /*如果结果不为空,就把结果print*/
            if (res_ptr)
            {
                /*取得結果的行数和*/
                column = mysql_num_fields(res_ptr);
                row = mysql_num_rows(res_ptr);
                printf("查询到 %d 行 \n", row);
                /*输出結果的字段名*/
                for (i = 0; field = mysql_fetch_field(res_ptr); i++)
                    printf("%10s ", field->name);
                printf("\n");
                /*按行输出結果*/
                for (i = 1; i < row+1; i++)
                {
                    result_row = mysql_fetch_row(res_ptr);
                    for (j = 0; j < column; j++)
                        printf("%10s ", result_row[j]);
                    printf("\n");
                }
            }
            /*不要忘了关闭连接*/
            mysql_close(&my_connection);
        }
    }
    else
    {
        printf("数据库连接失败");
    }
}



  3.加入头文件所需要的mysql.h所需要的库

              步骤:工具==》》选项==》》目录(点击此选项)==》》include files 选择添加

                             

c mysql 链接代码 c与mysql数据库连接_sql_02

 

         3.加入mysql.h的实现,在win平台为libmysql.lib文件(至于为什么是lib文件,看图理解或者自己上网理解)

                     

c mysql 链接代码 c与mysql数据库连接_数据库_03

 

                               

c mysql 链接代码 c与mysql数据库连接_sql_04

                3.在环境编译时加入此文件libmsql.lib步骤:

                          工程==》设置==》连接 (选此选项卡)==》在对象/库模块中加入libmysql.lib 

                              

c mysql 链接代码 c与mysql数据库连接_mysql_05

 

4.此时再讲动态连接库libmysql.dll复制到要发布的realse/debug 目录下(因为dll 是动态运行时才加载的可执行文件,此时确保能正常运行)一定要这步,不然会报错说找不到这个文件

 

                             

c mysql 链接代码 c与mysql数据库连接_数据库_06

 

5.编译运行:结果

                             

c mysql 链接代码 c与mysql数据库连接_sql_07

总结:

       C连接数据库有两种形式。一种是官方提供的C驱动包,另一种是ODBC的连接。代码中引入的文件mysql.h 是对mysql的操作的声明,实现的方法文件是libmysqld.dll 文件,而libmysql.lib 文件是为了编译时能加入libmysqld.dll的函数让编译器通过,知道有此函数的实现。但是这种连接方法是和mysql数据库耦合在一起的,代码的可维护性非常不好,推荐使用ODBC吧(愚解)。