c语言连接mysql数据库的实现方法

C语言连接mysql数据库,需要相应的头文件和lib文件,如果你安装Mysql数据库,会在安装目录下找到这些库文件,如果没有安装,也可以在网上找到
我这里也有一份网上找到的:/201205/other/C_link_mySql51.rar
C连接MySql5.1所需文件.rar
附带一个不错的例子: 
  1 #include <string.h> 
  2 #include <stdlib.h> 
  3 #include <stdio.h> 
  4 #include <winsock2.h> 
  5 #include <mysql/mysql.h>/*注意要包含这个头文件*/ 
  6 #pragma comment(lib,"libmysql") 
  7 /*定义了一些数据库连接需要的宏*/ 
  8 #define HOST "localhost" 
  9 #define USERNAME "root" 
 10 #define PASSWORD "123456" 
 11 #define DATABASE "test" 
 12 /*这个函数用来执行传入的sql語句*/ 
 13 void exe_sql(char* sql) { 
 14 MYSQL my_connection; /*这是一个数据库连接*/ 
 15 int res; /*执行sql語句后的返回标志*/ 
 16 /*初始化mysql连接my_connection*/ 
 17 mysql_init(&my_connection); 
 18 /*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并 
 19 返回一个值,返回不为空证明连接是成功的*/ 
 20 if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, 
 21 DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*连接成功*/ 
 22 printf("数据库执行exe_sql连接成功!n"); 
 23 /*这句话是设置查询编码为utf8,这样支持中文*/ 
 24 mysql_query(&my_connection, "set names utf8"); 
 25 /*下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句, 
 26 这会返回一个int值,如果为0,证明語句执行成功*/ 
 27 res = mysql_query(&my_connection, sql); 
 28 if (res) {/*现在就代表执行失败了*/ 
 29 printf("Error: mysql_query !\n"); 
 30 /*不要忘了关闭连接*/ 
 31 mysql_close(&my_connection); 
 32 } else {/*现在就代表执行成功了*/ 
 33 /*mysql_affected_rows会返回执行sql后影响的行数*/ 
 34 printf("%d 行受到影响!\n", 
 35 mysql_affected_rows(&my_connection)); 
 36 /*不要忘了关闭连接*/ 
 37 mysql_close(&my_connection); 
 38 } 
 39 } else { 
 40 /*数据库连接失败*/ 
 41 printf("数据库执行exe_sql连接失败!\n"); 
 42 } 
 43 } 
 44 /*这个函数用来执行传入的sql語句,并打印出查询結果*/ 
 45 void query_sql(char* sql) { 
 46 MYSQL my_connection; /*这是一个数据库连接*/ 
 47 int res; /*执行sql語句后的返回标志*/ 
 48 MYSQL_RES *res_ptr; /*指向查询结果的指针*/ 
 49 MYSQL_FIELD *field; /*字段结构指针*/ 
 50 MYSQL_ROW result_row; /*按行返回的查询信息*/ 
 51 int row, column; /*查询返回的行数和列数*/ 
 52 int i, j; /*只是控制循环的两个变量*/ 
 53 /*初始化mysql连接my_connection*/ 
 54 mysql_init(&my_connection); 
 55 /*这里就是用了mysql.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并 
 56 返回一个值,返回不为空证明连接是成功的*/ 
 57 if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, 
 58 DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*连接成功*/ 
 59 printf("数据库查询query_sql连接成功!\n"); 
 60 /*这句话是设置查询编码为utf8,这样支持中文*/ 
 61 mysql_query(&my_connection, "set names utf8"); 
 62 *下面这句话就是用mysql_query函数来执行我们刚刚传入的sql語句, 
 63 这会返回一个int值,如果为0,证明語句执行成功*/ 
 64 res = mysql_query(&my_connection, sql); 
 65 if (res) { /*现在就代表执行失败了*/ 
 66 printf("Error: mysql_query !\n"); 
 67 /*不要忘了关闭连接*/ 
 68 mysql_close(&my_connection); 
 69 } else { /*现在就代表执行成功了*/ 
 70 /*将查询的結果给res_ptr*/ 
 71 res_ptr = mysql_store_result(&my_connection); 
 72 /*如果结果不为空,就把结果print*/ 
 73 if (res_ptr) { 
 74 /*取得結果的行数和*/ 
 75 column = mysql_num_fields(res_ptr); 
 76 row = mysql_num_rows(res_ptr) + 1; 
 77 printf("查询到 %lu 行 \n", row); 
 78 /*输出結果的字段名*/ 
 79 for (i = 0; field = mysql_fetch_field(res_ptr); i++) 
 80 printf("%st", field->name); 
 81 printf("\n"); 
 82 /*按行输出結果*/ 
 83 for (i = 1; i < row; i++) { 
 84 result_row = mysql_fetch_row(res_ptr); 
 85 for (j = 0; j < column; j++) 
 86 printf("%st", result_row[j]); 
 87 printf("\n"); 
 88 } 
 89 } 
 90 /*不要忘了关闭连接*/ 
 91 mysql_close(&my_connection); 
 92 } 
 93 } 
 94 } 
 95 int main(int argc, char *argv[]) { 
 96 /*测试下向里面插入数据*/ 
 97 char *query; 
 98 char *exe = "insert into student values('lala','hahhahah!');"; 
 99 exe_sql(exe); 
100 *测试下查询*/ 
101 query="select * from student;"; 
102 query_sql(query); 
103 return 0; 
104 } 

 

posted @ 2015-08-28 09:58  陌钰陌城  Views(217)  Comments(0Edit  收藏  举报