1、手写安装带mysql sdk 的mysql
2、新建控制台项目,项目属性中把
C:\Program Files\MySQL\MySQL Server 5.5\include 加入“包含目录”
把C:\Program Files\MySQL\MySQL Server 5.5\lib 加入“库目录”

3、stdafx.h中加入
#include <winsock.h> //注意顺序,要放在mysql.h前
#include <mysql.h>//控制台项目中要在mysql.h之前include <winsock.h>

//注意lib添加到“库目录”中,而不是“引用目录”中
#pragma comment(lib, "libmysql.lib")

4、把libmysql.dll放到生成的exe目录下

5、主要的几个例子:
//执行基本查询
void test1()
{
 MYSQL *pConn;
 pConn = mysql_init(NULL);
 //第2、3、4、5参数的意思分别是:服务器地址、用户名、密码、数据库名,第6个为mysql端口号(0为默认值3306)
 if(!mysql_real_connect(pConn,"localhost","root","root","test",0,NULL,0))
 {  
  printf("无法连接数据库:%s",mysql_error(pConn));
  return;
 }
 mysql_query(pConn,"set names gbk");//防止乱码。设置和数据库的编码一致就不会乱码
 //SET NAMES x 相当于 SET character_set_client = x;SET character_set_results = x;SET character_set_connection = x;
 //写set character set gbk;查询不会乱码,但是参数化插入会报错。而set names gbk则都不会乱码

//mysql_real_query比mysql_query多了个参数: 字符串query的长度, 所以适合有二进制数据的query, 而mysql_query的字符串query不能包含二进制,因为它以\0为结尾
 //mysql_query() 不能传二进制BLOB字段,因为二进制信息中的\0会被误判为语句结束。 mysql_real_query() 则可以。
 if(mysql_query(pConn,"select * from persons"))
 {
  printf("查询失败:%s",mysql_error(pConn));
  return;
 }

//mysql_store_result是把查询结果一次性取到客户端的离线数据集,当结果比较大时耗内存。
 //mysql_use_result则是查询结果放在服务器上,客户端通过指针逐行读取,节省客户端内存。但是一个MYSQL*连接同时只能有一个未关闭的mysql_use_result查询
 MYSQL_RES *result = mysql_store_result(pConn);
 MYSQL_ROW row;
 while(row = mysql_fetch_row(result))
 {
  printf("%s %s\n",row[1],row[2]);
 }

mysql_free_result(result);
 mysql_close(pConn);
}

//获得更新行数
void test2()
{
 MYSQL *pConn;
 pConn = mysql_init(NULL);
 if(!mysql_real_connect(pConn,"127.0.0.1","root","root","test",0,NULL,0))
 {
  printf("无法连接数据库:%s",mysql_error(pConn));
  return;
 }
 if(mysql_query(pConn,"update persons set Age=Age+1"))
 {
  printf("执行失败:%s",mysql_error(pConn));
  return;
 }
 printf("更新成功,共更新完成%d条",mysql_affected_rows(pConn));
 mysql_close(pConn);
}

//获得自增id
void test3()
{
 MYSQL *pConn;
 pConn = mysql_init(NULL);
 if(!mysql_real_connect(pConn,"127.0.0.1","root","root","test",0,NULL,0))
 {
  printf("无法连接数据库:%s",mysql_error(pConn));
  return;
 }
 mysql_query(pConn,"set names gbk");
 if(mysql_query(pConn,"insert into persons(Name,Age) values('如鹏网',100)"))
 {
  printf("执行insert失败%s",mysql_error(pConn));
  return;
 }
 printf("执行insert成功,新id=%d",mysql_insert_id(pConn));
 mysql_close(pConn);

}

//参数化查询
void test4()
{
 MYSQL* pConn;
 pConn = mysql_init(NULL);
 if(!mysql_real_connect(pConn,"127.0.0.1","root","root","test",0,NULL,0))
 {
  printf("数据库连接失败:%s",mysql_error(pConn));
  return;
 }

mysql_query(pConn,"set names gbk");
 MYSQL_STMT    *stmt;   
    MYSQL_BIND    bind[2];  
 memset(bind,0,sizeof(bind));//把is_null、length等字段默认值设置为NULL等默认值,否则执行会报错

stmt = mysql_stmt_init(pConn); 
 char* insertSQL="insert into persons(Name,Age) values(?,?)";
    if (mysql_stmt_prepare(stmt, insertSQL, strlen(insertSQL)))   
    {   
        fprintf(stderr, " mysql_stmt_prepare(), INSERT failed,%s\n",mysql_error(pConn));
        return;   
    }   
 bind[0].buffer_type= MYSQL_TYPE_STRING;   
    bind[0].buffer= "黑马";   
    bind[0].buffer_length= strlen("黑马"); //如果设定了buffer_length,则可以不试用length
   
    int age=3;

bind[1].buffer_type= MYSQL_TYPE_LONG;   
    bind[1].buffer= &age; 
 bind[1].buffer_length = sizeof(age);
    
    if (mysql_stmt_bind_param(stmt, bind))   
    {   
        fprintf(stderr, " mysql_stmt_bind_param() failed %s\n", mysql_stmt_error(stmt));   
        return;
    }   
   
    if (mysql_stmt_execute(stmt))   
    {   
        fprintf(stderr, " mysql_stmt_execute(), failed %s\n", mysql_stmt_error(stmt));   
        return;  
    }   
 mysql_stmt_close(stmt);
 mysql_close(pConn); 
 printf("参数化执行SQL结束");
}

如鹏网.Net培训班正在报名,有网络的地方就可以参加如鹏网的学习,学完就能高薪就业,点击此处了解

三年前只要懂“三层架构”就可以说“精通分层架构”;现在则需要懂IOC(AutoFac等)、CodeFirst、lambda、DTO等才值钱;

三年前只要会SQLServer就可以说自己“精通数据库开发”;现在则需还需要掌握MySQL等开源数据库才能说是“.Net开源”时代的程序员;

三年前只要会进行用户上传内容的安全性处理即可;现在则需要熟悉云存储、CDN等才能在云计算时代游刃有余;

三年前只要掌握Lucene.Net就会说自己“熟悉站内搜索引擎开发”;现在大家都用ElasticSearch了,你还用Lucene.Net就太老土了;

三年前发邮件还是用SmtpClient;现在做大型网站发邮件必须用云邮件引擎;

三年前缓存就是Context.Cache;现在则是Redis、Memcached的天下;

如鹏网再次引领.Net社区技术潮流!点击此处了解如鹏网.Net最新课程

C语言访问MYSQL数据库的完整的代码例子相关推荐

  1. MySQL笔记12:C语言访问MYSQL数据库的完整的代码例子

    C语言访问MYSQL数据库的完整的代码例子 1.手写安装带mysql sdk 的mysql 2.新建控制台项目,项目属性中把 C:\Program Files\MySQL\MySQL Server 5 ...

  2. Mysql —— linux下使用c语言访问mySql数据库

    示例1: #include<stdio.h> #include<mysql.h> int main() { MYSQL mysql; mysql_init(&mysql ...

  3. c语言访问mysql,C语言访问mysql数据库

    mysql中新建的数据库为hyx,hyx中的表为my_schema,表中的数据为下图: 编写代码,访问表中的数据,测试代码如下: #include "stdafx.h" #incl ...

  4. 使用C语言访问MySQL数据库基础

    使用C语言访问MySQL数据库基础 一.MySQL管理 包含在MySQL发行版中的一些有用的工具程序使管理工作变得相当容易. 除mysqlshow命令以外,所有的MySQL命令都接受所示的3个标准参数 ...

  5. python语言数据库规模_Python语言访问MySQL数据库

    4.使用python语言访问MySQL 1)pymysql库:Python语言访问MySQL接口 -安装: 在线:pip install pymysql 离线: 第一步:下载安装包,下载地址: htt ...

  6. 【Linux】Ubuntu下C语言访问MySQL数据库入门

    使用的系统是Ubuntu 11.10.数据库是MySQL. MySQL数据库环境配置 首先需要安装MySQL客户端和服务器,命令行安装方式为: sudo apt-get install mysql-s ...

  7. c 直接访问mysql_C语言访问MySQL数据库的方法

    1.添加头文件路径(MySQL安装路径中的include路径) 2.添加库文件(直接从MySQL安装路径中copy libmysql.lib即可) 3.编程操作数据库// AccessToMySQL. ...

  8. c访问mysql数据库_C语言访问MySQL数据库的方法

    1.添加头文件路径(MySQL安装路径中的include路径) 2.添加库文件(直接从MySQL安装路径中copy libmysql.lib即可) 3.编程操作数据库 代码 // AccessToMy ...

  9. ubuntu下c 访问mysql_Ubuntu下用C语言访问MySQL数据库

    在Ubuntu下费了好长时间终于让C操作MySQL成功了,在此把方法记下来,留着以后用.先安装MySQL 代码: sudo apt-get install mysql 在Ubuntu下费了好长时间终于 ...

最新文章

  1. Python模块学习:threading 多线程控制和处理
  2. 关系数据库SQL语言核心功能
  3. PXF webapp is inaccessible but tomcat is up
  4. Java枚举类型的用法
  5. k近邻算法matlab实现_k近邻算法
  6. Failed to execute goal org.apache.maven.plugins:maven-deploy-plugin:2.8.2:deploy
  7. 阿里云申请免费ssl证书并配置nginx
  8. maven错误相关(整理中)
  9. CISCO防火墙自动配置、备份脚本
  10. win11安装linux双系统
  11. 高斯克吕格投影,将经纬度转换为投影坐标
  12. 基于深度学习的命名实体识别与关系抽取
  13. YOLO算法原理详解
  14. HighNewTech:Gartner发布2021年新兴技术成熟度曲线和2022年重要战略技术趋势(信任、增长和变革三大新兴技术趋势)解读
  15. ctf题库--天下武功唯快不破
  16. 渲染图用计算机配置,3d渲图电脑配置清单
  17. 关于WEB页面处谷歌验证的接入
  18. 使用递归方法查询所有分类(一)
  19. 预防猝死,8个心率监测方案随时监测的身体状况
  20. 出现VW自适应方案报错already has a ‘content‘ property, give up to overwrite it的原因及解决办法

热门文章

  1. 一个合格程序员该做的事情
  2. 数据结构7.6_最短路径
  3. vue 编译警告 Compiled with 4 warnings
  4. 浅谈RxJava与2.0的新特性
  5. oracle xclock xmanager
  6. PHP IPC函数介绍---共享内存
  7. 移动web开发常用JavaScript代码(转)
  8. Maven学习总结(九)——使用Nexus搭建Maven私服
  9. Slog21_支配vue框架模版语法之v-pre
  10. django框架-DRF工程之认证功能