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

 更新时间:2012年05月05日 00:59:00   投稿:mdxy-dxy  
C语言连接mysql数据库,需要相应的头文件和lib文件,如果你安装Mysql数据库,会在安装目录下找到这些库文件,如果没有安装,也可以在网上找到

我这里也有一份网上找到的:/201205/other/C_link_mySql51.rar
C连接MySql5.1所需文件.rar
附带一个不错的例子:

#include <string.h> 
#include <stdlib.h> 
#include <stdio.h> 
#include <winsock2.h> 
#include <mysql/mysql.h>/*注意要包含这个头文件*/ 
#pragma comment(lib,"libmysql") 
/*定义了一些数据库连接需要的宏*/ 
#define HOST "localhost" 
#define USERNAME "root" 
#define PASSWORD "123456" 
#define DATABASE "test" 
/*这个函数用来执行传入的sql語句*/ 
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"); 
} 
} 
/*这个函数用来执行传入的sql語句,并打印出查询結果*/ 
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.h里的一个函数,用我们之前定义的那些宏建立mysql连接,并 
返回一个值,返回不为空证明连接是成功的*/ 
if (mysql_real_connect(&my_connection, HOST, USERNAME, PASSWORD, 
DATABASE, 0, NULL, CLIENT_FOUND_ROWS)) {/*连接成功*/ 
printf("数据库查询query_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 { /*现在就代表执行成功了*/ 
/*将查询的結果给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) + 1; 
printf("查询到 %lu 行 \n", row); 
/*输出結果的字段名*/ 
for (i = 0; field = mysql_fetch_field(res_ptr); i++) 
printf("%st", field->name); 
printf("\n"); 
/*按行输出結果*/ 
for (i = 1; i < row; i++) { 
result_row = mysql_fetch_row(res_ptr); 
for (j = 0; j < column; j++) 
printf("%st", result_row[j]); 
printf("\n"); 
} 
} 
/*不要忘了关闭连接*/ 
mysql_close(&my_connection); 
} 
} 
} 
int main(int argc, char *argv[]) { 
/*测试下向里面插入数据*/ 
char *query; 
char *exe = "insert into student values('lala','hahhahah!');"; 
exe_sql(exe); 
*测试下查询*/ 
query="select * from student;"; 
query_sql(query); 
return 0; 
} 

相关文章

  • C语言实现电子邮件地址验证程序

    C语言实现电子邮件地址验证程序

    这篇文章主要介绍了C语言实现电子邮件地址验证程序,利用的是POSIX正则表达式,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • 如何正确的使用语句块

    如何正确的使用语句块

    本篇文章是对正确使用语句块进行了详细的分析介绍,需要的朋友参考下
    2013-05-05
  • 双向链表插入删除基本应用介绍

    双向链表插入删除基本应用介绍

    本文将详细介绍建立双向链表,实现对双向链表的插入,删除操作,需要了解的朋友可以参考下
    2012-11-11
  • C语言中求和、计算平均值、方差和标准差的实例

    C语言中求和、计算平均值、方差和标准差的实例

    这篇文章主要介绍了C语言中求和、计算平均值、方差和标准差的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • windows下如何安装OpenCL

    windows下如何安装OpenCL

    这篇文章主要介绍了windows下如何安装OpenCL,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • c语言程序设计文件操作方法示例(CreateFile和fopen)

    c语言程序设计文件操作方法示例(CreateFile和fopen)

    c主要的文件操作函数有:CreateFile,CloseHandle,ReadFile,WriteFile,SetFilePointer,GetFileSize。其中的读写操作是以字符为单位,获得文件大小也是以字符为单位。
    2013-12-12
  • c++通过引用实现三个数字求最大值

    c++通过引用实现三个数字求最大值

    下面我们将通过这个例子来说明引用的作为函数参数的使用方法。需要的朋友可以过来参考下,希望对大家有所帮助
    2013-10-10
  • C++ std::function详解

    C++ std::function详解

    类模版std::function是一种通用的多态函数包装器std::function的实例可以对任何可以调用的目标实体进行存储、复制、和调用操作,本文详细的介绍一下,感兴趣的可以了解一下
    2021-10-10
  • C语言 structural body结构体详解用法

    C语言 structural body结构体详解用法

    C 数组允许定义可存储相同类型数据项的变量,结构是 C 编程中另一种用户自定义的可用的数据类型,它允许您存储不同类型的数据项,结构用于表示一条记录,假设您想要跟踪图书馆中书本的动态,您可能需要跟踪每本书的下列属性
    2021-10-10
  • Qt+OpenCV利用帧差法实现车辆识别

    Qt+OpenCV利用帧差法实现车辆识别

    所谓帧差法也就是对连续图像帧做差分运算,其结果与定义好的阈值比较,若大于阈值则为运动目标值为1,否则值为0 。本文将利用帧差法实现车辆识别,感兴趣的可以了解一下
    2022-08-08

最新评论