c连接MySQL,本人操作系统为Windows10。
经过多重百度,一共有两种方法连接MySql:
1.通过ODBC连接。其连接操作、先在UI界面上操作然后再去编写代码。
2.通过MySQL的API函数直接进行连接。
首先介绍ODBC:
开放式数据库连接 (ODBC) 接口是一个应用程序编程接口,由 Microsoft Corporation 定义为 Windows 操作系统上数据库管理系统的标准接口。ODBC 是基于调用的接口。
要编写用于 SQL Anywhere 的 ODBC 应用程序,您需要:
- SQL Anywhere。
- 能够为您的环境创建程序的 C 编译器。
- Microsoft ODBC 软件开发工具包。在 Microsoft 开发人员网络上可以找到该工具包,该工具包提供测试 ODBC 应用程序时所用的文档及其它工具。
支持的平台
除了支持 Windows 上的 ODBC API 之外,SQL Anywhere 还支持 Unix 和 Windows Mobile 上的 ODBC API。由于有了多平台 ODBC 支持,便携式数据库应用程序开发变得更加容易。
有关在分布式事务中征用 ODBC 驱动程序的信息,请参见三层计算和分布式事务。
本人只实现到ODBC的UI界面。其代码连接中因为连接函数的参数无法找到对应的错误而放弃了。
环境搭建:
需要ODBC的MySql驱动
其下载连接如下:
https://dev.mysql.com/downloads/connector/odbc/
Windows下载后是二进制文件。就是傻瓜式的.exe文件。直接安装到你所能找到的目录下即可。
然后打开windows下的 控制面板->系统和安全->管理工具->ODBC Data Sources(32-bit)
如果上面路径找不到那就是下面的路径 控制面板->系统和安全->管理工具->ODBC 数据源(64位)
用户DSN是当前登录此电脑的用户可使用此数据源
系统DSN是登录此电脑的用户都可使用此数据源
个人添加的是系统DSN
点击添加
选择MySQL ODBC 8.0 Unicode Driver点击完成,然后配置相对应的参数
test成功即可。
接下来去 c:/windows/System32下寻找odbc32.dll将其拷贝至你的项目目录下。反正编译的时候可以连接到此库即可。
然后利用ODBC的c接口来连接数据库即可。但我这儿因为找不到参数错误而连接不上,于是乎就放弃了。
其官方文档连接如下:
https://docs.microsoft.com/zh-cn/sql/odbc/reference/syntax/odbc-api-reference?view=sql-server-ver15
2.利用MySQL的c接口来进行连接,此连接方式好处速度快。同时环境搭建也相对简单同样也不必去UI界面上操作太多。
环境搭建:
所需要的头文件和连接库文件需要在mysql的安装目录下寻找。最简单最暴力的方式为将mysql安装目录下的include目录直接拷贝至你的项目头文件目录然后将其改为mysql再将其中所有目录再添加到包含目录。然后在mysql的安装目录下的lib目录下有所需要的静态链接库。同样暴力拷贝至你的项目的连接库中。
如果为linux用户其实更加简单,只要你装了MySql了就可以直接利用find命令去寻找这么几个连接库然后在你的makefile中去连接这么几个静态库添加这么几个头文件目录。
编写代码
好了,接下来直接上连接成功的代码
main.c
#include<main.h>
MYSQL* mysql = NULL;
int InitConnect(void);
int main() {
InitConnect();
return 0;
}
int InitConnect() {
mysql = mysql_init((MYSQL*)NULL);
if (!mysql) {
return -1;
}
mysql = mysql_real_connect(mysql, "你要连接的Mysql的ip地址", "mysql的用户名", "mysql的用户密码", "数据库", 0, NULL, 0);
if (mysql) {
printf("connection succellfull the dataBase!\n");
}
else {
printf("connection error:%d,%s\n", mysql_errno(mysql), mysql_error(mysql));
}
return 0;
}
main.h
#include<stdio.h>
#include<windows.h>
#include<stdlib.h>
#include<string.h>
#include<mysql.h>
#pragma comment(lib,"libmysql.dll")
这里在下只是写的测试代码。
完整api文档连接如下:
作者:吾非善类