c连接mysql

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文档连接如下:

https://dev.mysql.com/doc/c-api/8.0/en/c-api-data-structures.html

作者:吾非善类

猜你喜欢

转载自blog.csdn.net/qq_36797488/article/details/109547211