问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

linux下c语言连接Mysql

发布网友 发布时间:2022-04-23 07:05

我来回答

4个回答

热心网友 时间:2022-04-29 23:37

老大,原来你连 C 的原理都不会啊?

C 语言所有调用函数,都要有声明,这种外部函数库的调用,都要用他们的 header 文件来声明函数变量等等的东西,编译器会根据实际情况去把这些程序里面的函数调用链接到函数库的正确位置上。

微软的产品因为他垄断了他自己系统的所有功能设计。所以他的系统+他的开发程序+他的开发函数库就不需要 header 文件了,因为它可以设计为 dll 本身含有足够的信息去干别的事情了。所以,你别以为你用了微软的 .net ,他就还是 C 语言了。他已经脱离了 C 语言的范围了。

GCC一般情况下是编译器,但编译器是不够的,还需要连接器的工作才行。binutils 里面的软件提供相关的功能。

要知道以前链接到函数库功能,光有 header 和函数库文件本体还是不行的,还需要另外的函数库信息文件来帮助编译器连接器来找到正确的函数入口位置才行的。

你编程 C ,你要选择你所使用的功能调用方法,GCC 一般调用 mysql 有调用外部 dll ,或者程序自己直接链接 mysql 端口,自己分析 mysql 服务进程发送的各种信息!

前一种办法,可以直接选择 mysql 客户端里面的 SDK 来直接获得官方的功能支持,但官方 MySQL 是 GPL 协议发布的,你使用他的功能接口后,你的程序也必须以 GPL 发布,不然你就要去选择其他的函数库,比如 ODBC 的 mysql 库。当然还有第三方的 mysql 功能库可以选择。
不过你要注意,LGPL 必须严格区分你的程序和 LGPL 代码。你必须动态链接到 LGPL 函数库。如果你的程序包含 LGPL 函数库一起发布,且 LGPL 库是你的软件的必备函数库,那么你的程序也必须开源,但不是 GPL 而是 LGPL !

不然你就选择自己写程序直接与 mysql 服务器进行数据传输,不使用第三方功能库。

但我不认为身为一个 Linux 下程序开发人员,会去傻傻的自己写功能函数而不是用现成的函数库。

你所遇到的“非要客户安装 mysql client ”,就是因为你的软件调用了一些非你自己编写的函数调用功能,而为了获取这些函数而需要安装几个 mysql 函数库的问题。

这个问题我想不应该是一个开发人员提出来的吧?
------------------------------------

楼主你还是重新学习 C 语言吧。.net 的 C 被微软改的不是真正的 C 语言了,所以你没办法按照 C 的标准去比较 .net 和 GCC 的。
而且很多 .net 的编程习惯也没办法延续到 GCC 的。

热心网友 时间:2022-04-30 00:55

和.net同样的道理,你在.net也需要在你的部署包中包含dll才能去连接,除非你静态联接了相关的code, 在linux下你需要下载mysql的C库开发包(libmysql++-dev libmysql++2c2a libmysqlclient15-dev libmysqlclient15off) 这里面已经包含了动态库和静态库,如果是静态库链接,你就只需要把你的程序部署给别人即可,如果是动态链接,还需要把相关的.so也包含在你的部署包中分发给使用者

热心网友 时间:2022-04-30 02:29

#include "/usr/local/mysql/include/mysql/mysql.h" /*为绝对路径*/
#include <stdio.h>

int main()
{
char *user = "vod", *pwd = "vod", *dbname = "vod", *host="211.161.159.106";
MYSQL mysql;
MYSQL_RES *mysql_ret;
MYSQL_ROW mysql_row;
unsigned long num_rows;
int ret;

mysql_init(&mysql);

if(mysql_real_connect(&mysql,host,user,pwd,dbname,0,NULL,0))
{
printf("Connection success!\n");
ret = mysql_query(&mysql,"select * from user");
if(!ret)
{
printf("Query Success!\n");
mysql_ret = mysql_store_result(&mysql);
if(mysql_ret != NULL)
{
printf("Store Result Success!\n");
num_rows = mysql_num_rows(mysql_ret);
if(num_rows != 0)
{
printf("%d\n",num_rows);
while(mysql_row = mysql_fetch_row(mysql_ret))
{
printf("%s\t%s\t%s\t%s\t%s\t%s\n",mysql_row[0],mysql_row[1],mysql_row[2],mysql_row[3],mysql_row[4],mysql_row[5]);
}
}
else
{
printf("mysql_num_rows Failed!\n");
return(-1);
}
mysql_free_result(mysql_ret);
return(0);
}
else
{
printf("Store Result Failed!\n");
return(-1);
}
}
else
{
printf("Query Failed!\n");
return(-1);
}
}
else
{
printf("Connection Failed\n");
return(-1);
}
}
自己看吧,写的我累死了,运行没问题的。流程都在里面了。你会用GCC编译器编译它吧?(废话,呵呵,不过注意带几个mysql下的动态链接库)

热心网友 时间:2022-04-30 04:21

Mysql安装完有一个lib文件夹和一个include文件夹,将头文件和库文件引入,就可以连接了。写完的程序放在没有mysql的地方也可以远程连接,不过参数要写对。mysql提供了一堆的C接口,封装下用就好。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 黑客攻击报案有用吗 linux c怎么使用mysql数据库 linux c mysql 参数怎么使用 电陶炉和电磁炉哪个更好一些 面团的作用 为什么现在越来越多人使用电陶炉?电陶炉比电磁炉好在哪里? 家用:电磁炉和电陶炉哪个好 茶具电磁炉和电陶炉哪个好哪个更优越 电磁炉和电陶炉有什么区别?哪一个更实用点?电陶炉与点电磁炉哪个好 电磁炉和电陶炉买哪个? 选电磁炉好还是电陶炉好? 电陶炉和电磁炉有什么区别?哪个比较好用 电磁炉和电陶炉哪个安全最高? 文荣奖白鹿为什么没去 如何评价白鹿在《王牌部队》中的表现? 家用电磁炉好还是电陶炉好? 白鹿为什么好资源这么多?她的家庭背景很强大吗? 许凯和白鹿分手后还有联系吗? 白鹿粉丝反对和罗云熙二搭,并撕上热搜!对此你怎么看? 灵感之夜生图曝光,白鹿湿发比男明星还帅,许佳琪财阀少女吧,你怎么看? 白鹿晒9宫格*,花式比心甜美可爱,她如今在娱乐圈发展的如何? linux下用c语言操作mysql数据库。 关于linux下c语言链接mysql 在linux中如何实现C++与MySql的连接? Linux下C连接MySQL数据库错 linux C mysql gcc的问题 linux c下mysql提示cannot find -lmysqlclient linux下C语言操作mysql出错的问题 linux下c语言操作MYSQL编译报错 linux系统下c语言连接mysql数据库时有关mysql_error这个函数的返回值的... Linux系统下mysql运行慢,请给出分析方案!! linux下用c语言从mySQL中查询并返回查询值 linux上怎么部署mysql 武汉现状如何? 武汉现在情况怎么样了? 90后外卖小哥用镜头记录下武汉现状,现在的武汉怎么样了? 2021年武汉会如何发展? 大数据带你看湖北重振现状,如今的湖北怎么样了? 万达500亿砸出的武汉楚河汉街,现状如何? 湖北武汉疫情现在什么情况? 武汉这个城市什么情况