软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程。
API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能。
Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作。
Mysql的安装
要进行Mysql编程首先要在充当Mysql服务器的电脑和本机上都安装Mysql,服务器上的Mysql用来连接查询,本机上的Mysql作为开发之用,当然本机也可以兼顾服务器和开发之用。下载Mysql可以到http://www.mysql.com/downloads/mysql/。鸡啄米安装的是“Windows (x86, 64-bit), MSI Installer”版本。
在Mysql安装过程中,安装选项一定要选上Development Components下的Client C API library(shared),这样才会将Mysql API的头文件和动态库安装到电脑中。
安装完成后,我们编程要用的就是include目录下的头文件和lib目录下的库文件。
Mysql API数据结构
Mysql API中用到了很多结构体等数据类型,下面就简单说说常用的几个数据结构的含义,至于它们的定义鸡啄米就不贴了,大家可以到Mysql提供的mysql.h头文件中查看。
MYSQL
连接数据库前,必须先创建MYSQL变量,此变量在很多Mysql API函数会用到。它包含了一些连接信息等数据。
MYSQL_RES
MYSQL_RES结构体中包含了查询结果集,也就是从数据库中查询到的数据。可以使用mysql_store_result或mysql_use_result函数获得。
MYSQL_ROW
MYSQL ROW的定义如下:
typedef char **MYSQL_ROW;
可见,它实际上是char **类型,指向一个字符串数组。可以通过mysql_fetch_row函数获得。
MYSQL_FIELD
MYSQL_FIELD中包含了字段名、字段类型和大小等信息。可以重复调用mysql_fetch_field函数获得所有字段的信息。
Mysql C API编程步骤
1、首先我们要包含mysql的头文件,并链接mysql动态库。即添加以下语句:
#include <WinSock2.h> // 进行网络编程需要winsock2.h
#include <mysql.h>
#pragma comment(lib, “libmysql.lib”)
2、创建MYSQL变量。如:
MYSQL mysql;
3、初始化MYSQL变量。
mysql_init(&mysql);
4、调用mysql_real_connect函数连接Mysql数据库。mysql_real_connect函数的原型如下:
MYSQL * STDCALL mysql_real_connect(MYSQL *mysql, const char *host,const char *user,const char *passwd,const char *db,unsigned int port,const char *unix_socket,unsigned long clientflag);
参数说明:mysql--前面定义的MYSQL变量;host--MYSQL服务器的地址;user--登录用户名;passwd--登录密码;db--要连接的数据库;port--MYSQL服务器的TCP服务端口;unix_socket--unix连接方式,为NULL时表示不使用socket或管道机制;clientflag--Mysql运行为ODBC数据库的标记,一般取0。连接失败时该函数返回0托福答案
5、调用mysql_real_query函数进行数据库查询。mysql_real_query函数的原型如下:
int STDCALL mysql_real_query(MYSQL *mysql, const char *q, unsigned long length);
参数说明:mysql--前面定义的MYSQL变量;q--SQL查询语句;length--查询语句的长度。
查询成功则该函数返回0。
6、通过调用mysql_store_result或mysql_use_result函数返回的MYSQL_RES变量获取查询结果数据。
两个函数的原型分别为:
MYSQL_RES * STDCALL mysql_store_result(MYSQL *mysql);
MYSQL_RES * STDCALL mysql_use_result(MYSQL *mysql);
这两个函数分别代表了获取查询结果的两种方式。第一种,调用mysql_store_result函数将从Mysql服务器查询的所有数据都存储到客户端,然后读取;第二种,调用mysql_use_result初始化检索,以便于后面一行一行的读取结果集,而它本身并没有从服务器读取任何数据,这种方式较之第一种速度更快且所需内存更少,但它会绑定服务器,阻止其他线程更新任何表,而且必须重复执行mysql_fetch_row读取数据,直至返回NULL,否则未读取的行会在下一次查询时作为结果的一部分返回,故经常我们使用mysql_store_result雅思答案
7、调用mysql_fetch_row函数读取结果集数据。
上述两种方式最后都是重复调用mysql_fetch_row函数读取数据。mysql_fetch_row函数的原型如下:
MYSQL_ROW STDCALL mysql_fetch_row(MYSQL_RES *result);
参数result就是mysql_store_result或mysql_use_result的返回值。
该函数返回MYSQL_ROW型的变量,即字符串数组,假设为row,则row[i]为第i个字段的值。当到结果集尾部时,此函数返回NULL。
8、结果集用完后,调用mysql_free_result函数释放结果集,以防内存泄露。mysql_free_result函数的原型如下:
void STDCALL mysql_free_result(MYSQL_RES *result);
9、不再查询Mysql数据库时,调用mysql_close函数关闭数据库连接。mysql_close函数的原型为:
void STDCALL mysql_close(MYSQL *sock);
Mysql C API编程实例
这里给大家一个简单的Mysql API编程实例。使用VS2010编写。访问的数据库为安装Mysql后默认创建的名称为“mysql”的数据库,查询其“user”表的数据,步骤如下:
1、创建一个Win32 Console Application(Win32控制台程序)的空工程(创建空工程需要在向导的Application Settings一步中,勾选Empty project),名称就取为mysql。
2、在Solution Explorer窗口的工程名“mysql”上点右键,选择“Properties”,弹出工程的属性页,然后在左侧子窗口中,选择Configuration Properties->VC++ Directories,右侧子窗口中会显示一些设置项列表,然后在Include Directories项中添加Mysql的Include目录,在Library Directories项中添加Mysql的lib目录。
3、新建一个cpp文件,取名mysql.cpp。
4、在mysql.cpp文件中包含mysql头文件并链接mysql动态库。
#include <WinSock2.h>
#include <mysql.h>
#pragma comment(lib, “libmysql.lib”)
这里要注意,因为mysql用到了网络连接的接口函数,所以需要在前面包含WinSock2.h文件。
同时本例中使用了输出流cout,所以还要包含输入输出流头文件:
#include <iostream>
using namespace std;
5、创建main函数,并修改函数体如下:
int main()
{
MYSQL mysql;
MYSQL_RES *res;
MYSQL_ROW row;
// 初始化MYSQL变量
mysql_init(&mysql);
// 连接Mysql服务器,本例使用本机作为服务器。访问的数据库名称为“msyql”,参数中的user为你的登录用户名,***为登录密码,需要根据你的实际用户进行设置
if (!mysql_real_connect(&mysql, “127.0.0.1”, “user”, “123”, “mysql”, 3306, 0, 0))
{
cout << “mysql_real_connect failure!” << endl;
return 0;
}
// 查询mysql数据库中的user表
if (mysql_real_query(&mysql, “select * from user”, (unsigned long)strlen(“select * from user”)))
{
cout << “mysql_real_query failure!” << endl;
return 0;
}
// 存储结果集
res = mysql_store_result(&mysql);
if (NULL == res)
{
cout << “mysql_store_result failure!” << endl;
return 0;
}
// 重复读取行,并输出第一个字段的值,直到row为NULL
while (row = mysql_fetch_row(res))
{
cout << row[0] << endl;
}
// 释放结果集
mysql_free_result(res);
// 关闭Mysql连接
mysql_close(&mysql);
return 0;
}
6、将mysql安装目录中的libmysql.dll动态库文件拷贝到工程的当前目录,运行程序。
如果你跟鸡啄米一样使用的是mysql的64位版本,此时程序会报错,有很多不能解析的符号,这是因为我们的工程是32位的,应该改为64位,方法是,上面的工程属性页的右上角有个Configuration Manager按钮,点击它弹出Configuration Manager对话框,下面的列表中可以看到有我们的工程,Platform列显示为“Win32”:
这里需要点击右侧的箭头下拉,选择New弹出New Project Platform对话框,New platform选择x64创建新Platform:
上述的Platform列选择x64就可以了。再次运行程序,你会发现它果然不报错了。
本文就到这里了,到此大家应该对Mysql C API编程有了基本的了解了,在实际开发中可以不断深入研究。
Mysql C语言API编程入门讲解
时间: 2024-12-20 22:55:29
Mysql C语言API编程入门讲解的相关文章
Mysql C语言API编程入门讲解【转载】
软件开发中我们经常要访问数据库,存取数据,之前已经有网友提出让鸡啄米讲讲数据库编程的知识,本文就详细讲解如何使用Mysql的C语言API进行数据库编程.鞍山皮肤病专科医院www.0412pfk.net API,全称Application Programming Interfaces,即应用程序编程接口,我们可以调用这些接口,执行API函数提供的功能. Mysql C语言API就是用C语言编写的Mysql编程接口,使用这些接口函数可以实现对Mysql数据库的查询等操作. Mysql的安装 要进行M
mysql C语言API接口及实例
Mysql数据库动态库: libmysql.dll libmysql.lib mysql.h WinSock2.h Mysql API数据结构 (mysql.h) MYSQL:连接数据库前,必须先创建MYSQL变量,此变量在很多Mysql API函数会用到.它包含了一些连接信息等数据. MYSQL_RES:MYSQL_RES结构体中包含了查询结果集,也就是从数据库中查询到的数据.可以使用mysql_store_result或mysql_use_result函数获得. MYSQL_ROW:
Windows API 编程入门
Windows 工作原理的中心思想就是"动态链接"概念.Windows 自身带有一大套函数,应用程序就是通过调用这些函数 来实现它的用户界面和在屏幕上显示文本和图形的.这些函数都是在动态链接库里实现的. 这些文件的名称都带有后缀 .dll,或有时带有 .exe. Windows 的 3 个主要子系统:内核(kernel),用户(user),GDI. 内核 负责操作系统的传统工作:如 内存管理,文件输入/输出 以及任务管理等. 用户 指的是用户界面,负责所有的窗口管理. GDI 就是图形
如何选择编程入门语言?一个让很多人纠结的问题
用心分享,共同成长 没有什么比你每天进步一点点更实在了 本文已经收录至我的github,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 点关注,不迷路!!! 为什么会出这样一篇文章? ?本来想写点最近学习的东西,但是最近好多粉丝再问我一个问题. image-20200105164345384 于是我决定把我这个过来人的一些建议给到你们,希望大家少一些不必要的迷茫,多花点时间去学习该学习的东西,去做一些重要的事情. 刚开始学习
Unix/Linux环境C编程入门教程(24) MySQL 5.7.4 for Red Hat Enterprise 7(RHEL7)的安装
远观历史, MySQL的主要目的是为了能够在单处理器核心的商业服务器上运行.如今MySQL的一个变化用户可能不会注意到,那就是甲骨文已经开始重新架构MySQL的代码,使它大量的模块化.如软件解析器,优化和复制功能以模块化的形式被重写.该版本的查询性能得以大幅提升,比 MySQL 5.6 提升 1 倍,新版本的 MySQL 在测试平台上可达到每秒 512000 只读 QPS,而 MySQL 5.6 最高只能到 250000 QPS.该性能的提升是通过其 Memcached 插件实现的.同时该版本在
初识Django —Python API接口编程入门
初识Django -Python API接口编程入门 一.WEB架构的简单介绍 Django是什么? Django是一个开放源代码的Web应用框架,由Python写成.我们的目标是用Python语言,基于Django框架,利用MVC模型,实现后台方面的针对数据库的API开发.先了解一下互联网的WEB架构, 如上图: 互联网的WEB架构大致分为三层,web层.app层和数据库层.Web层:如apache网站服务器:app层主要是应用业务:DB指后台数据库.随着互联网的高速发展,网站访问量的增长.数
MySQL基础及MySQL C API编程
MySQL基础及MySQL C API编程 一.MySQL For Windows安装: 1. 下载: 上官网下载即可: http://www.mysql.com/downloads/ 2. 安装: 没有什么好说的,傻瓜式,也没有什么要注意的. 3. 配置: 添加系统变量MYSQL_HOME和修改PATH,目的就是让系统默认能够找到MySQL命令.(安装目录的/bin下面) PS: 补充一下,有的朋友可能下载的是免安装版本,拷贝到一个地方就可以了,这个时候,配置还是需要的,但是配置完成之后,需要
Unix/Linux环境C编程入门教程(41) C语言库函数的文件操作详解
?? 上一篇博客我们讲解了如何使用Linux提供的文件操作函数,本文主要讲解使用C语言提供的文件操作的库函数. 1.函数介绍 fopen(打开文件) 相关函数 open,fclose 表头文件 #include<stdio.h> 定义函数 FILE * fopen(const char * path,const char * mode); 函数说明 参数path字符串包含欲打开的文件路径及文件名,参数mode字符串则代表着流形态. mode有下列几种形态字符串: r 打开只读文件,该文件必须存
The MySQL C API 编程实例
在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇<The MySQL C API 编程实例>,希望对须要调用到MYSQL的C的API的朋友有所帮助,附例中的环境为RedHat 在这篇文章里,我们将学会怎么使用MySQL 的C APIs(Application Programming Interfaces 编程接口).为了非常好地了解这篇文章,您须要具备下面前提知识: C语言变量 C语言函数 C语言指针 简单介绍 C APIs包括在mysqlcli