您的位置:首页 > 数据库 > MySQL

c 连接mysql数据库

2016-05-27 09:09 363 查看
1、所使用的mysql.h 和libmysql.lib下载地址https://github.com/henrryyoung/connetc-mysql-with-c,将libmysql.lib加入到链接库,实在不行就直接复制到vs的lib中(当然不推荐了)

#include <stdio.h>

#include <winsock2.h>

#include <mysql.h>

#pragma comment(lib, "libmySQL.lib")

/*数据库连接用宏*/

#define HOST "localhost"

#define USERNAME "root"

#define PASSWORD ""

#define DATABASE "test"

void query_sql(char* sql);

void exe_sql(char* sql);

int main()

{
/*MYSQL mysql1;  
mysql_query(&mysql1,"create table ")*/

 //   int t, r;  

 //   /*连接之前,先用mysql_init初始化MYSQL连接句柄*/  

 //   mysql_init(&mysql);  

 //   /*使用mysql_real_connect连接服务器,其参数依次为MYSQL句柄,服务器IP地址, 

 //   登录mysql的用户名,密码,要连接的数据库等*/  

 //   if(!mysql_real_connect(&mysql, "localhost", "root", "", "test", 0, NULL, 0)) {  

 //       printf("Error connecting to Mysql!\n");  

 //   }else {  

 //       printf("Connected Mysql successful!\n");  

 //   }  

 //   /*关闭连接*/  

 //   mysql_close(&mysql);  
//system("pause");

 //   return 0;  

    char *query;

    query="select * from user";
//mysql_query(query);

    query_sql(query);system("pause");

    return 0;

}

void exe_sql(char* sql) { 

MYSQL my_connection; /*这是一个数据库连接*/ 

int res; /*执行sql語句后的返回标志*/ 

/*初始化mysql连接my_connection*/ 

mysql_init(&my_connection); 

/*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并 

返回一个值,返回不为空证明连接是成功的*/ 

if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, 

DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*连接成功*/ 

printf("数据库执行exe_sql连接成功!n"); 

/*这句话是设置查询编码为utf8,这样支持中文*/ 

mysql_query(&my_connection, "set names utf8"); 

/*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句, 

这会返回一个int值,如果为0,证明語句执行成功*/ 

res = mysql_query(&my_connection, sql); 

if (res) {/*现在就代表执行失败了*/ 

printf("Error: mysql_query !\n"); 

/*不要忘了关闭连接*/ 

mysql_close(&my_connection); 

} else {/*现在就代表执行成功了*/ 

/*mysql_affected_rows会返回执行sql后影响的行数*/ 

printf("%d 行受到影响!\n", 

mysql_affected_rows(&my_connection)); 

/*不要忘了关闭连接*/ 

mysql_close(&my_connection); 



} else { 

/*数据库连接失败*/ 

printf("数据库执行exe_sql连接失败!\n"); 





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, "localhost", "root", "", "test", 0, NULL, 0))  /*连接成功*/

    {

        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("数据库连接失败");

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: