MySQL Connector/C
一、Connector/C 简介
1.Connector/C (libmysqlclient) is a client library for C development
二、Connector/C 下载
1.官方下载页面:https://dev.mysql.com/downloads/connector/c/ 。
2.选择相对应的Connector/C版本(此处以mysql-connector-c-6.1.11-win32.zip为例)
三、Connector/C 使用
1.创建vc项目,项目文件夹目录如下
2.解压下载的zip文件,拷贝include及lib文件夹到vc项目3rd/mysql_connector_x86中。
3.项目属性中修改工作目录为 ../bin (项目工程的bin文件夹)
3.项目属性中添加include及lib链接库路径。
程序代码
//main.c
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <WinSock2.h> #include "mysql.h" #pragma comment(lib, "ws2_32.lib") #pragma comment(lib,"libmysql.lib") int main(int argc, char** argv) { WSADATA wsa; WSAStartup(MAKEWORD(2,2),&wsa); int ret; //创建mysql的连接 MYSQL* pConn = mysql_init(NULL); //使用创建的连接对象 连接对应的数据库 mysql_real_connect(pConn, "127.0.0.1", "root", "331700", "class_database", 3306, NULL, 0); //数据库是utf8编码,vc里是gbk //mysql_query为执行sql命令 mysql_query(pConn, "set names gbk"); //gbk字符编码; //插入 ret = mysql_query(pConn, "INSERT INTO `class_table` (name,sex,age) VALUE (\"songchao\",1,30);"); //获得错误信息 if (ret != 0) { printf("error:%s/n", mysql_error(pConn)); } //修改 ret = mysql_query(pConn, "UPDATE class_table SET age=29 WHERE name=\"songchao\""); //获得错误信息 if (ret != 0) { printf("error:%s/n", mysql_error(pConn)); } //删除数据 ret = mysql_query(pConn, "DELETE FROM class_table where id=2"); //获得错误信息 if (ret != 0) { printf("error:%s/n", mysql_error(pConn)); } //查询 ret = mysql_query(pConn, "SELECT * FROM class_table"); //获得错误信息 if (ret != 0) { printf("error:%s/n", mysql_error(pConn)); } else { MYSQL_RES* result = mysql_store_result(pConn); MYSQL_ROW row; //获得列总数 unsigned int num_field = mysql_num_fields(result); //获得列数据结构数组 MYSQL_FIELD *field = mysql_fetch_fields(result); //打印每一列的域名 for (unsigned int i = 0 ; i < num_field; i++) { printf("field_name:%s\n", field[i].name); } //获得行数据 while (row = mysql_fetch_row(result)) { for (unsigned int j = 0; j < num_field; j++) { printf("%s", row[j]); if (j == num_field - 1) { break; } printf(","); } printf("\n"); } } //关闭mysql连接 mysql_close(pConn); WSACleanup(); system("pause"); return 0; }