linux下c语言连接mysql

author author     2023-03-09     373

关键词:

最近新学linux编程,使用c语言,
现在练手项目是一个C操作远程mysql数据库.
之前一直从事.net开发,
在.net下要连接Mysql很方便,引用mysql提供程序就可以了,下载一个dll文件,然后引用到项目里,客户开不需要安装MyMsql客户端就可以连接远程mysql服务器了。
现在换到Linux+c语言下面,我的机器上没有安装Mysql Client,
只是引用了 #include<mysql.h> 是不可以的。
我想问的是:
c语言环境,是类似.net这种方式,只要下载库文件,然后去引用进项目么?
如果是这样子的,请问怎么操作。谢谢。
之前看到一篇:Linux下C语言连接MySQL的帖子,要在本地机器上安装Mysql Client,这样才会有对应的Mysql库,这样c语言环境才可以连接远程库.
如果非要这样的话,
我想布属的时候也要求别人安装Mysql Client?,可不可以像类似.net里面,只要引用一个dll文件就可以了呢。
这样的情况下,怎么样用 c去连接远程 Mysql呢
我想问一下
包含的头文件
#include "/usr/local/mysql/include/mysql/mysql.h" /*为绝对路径*/
要自己去手动安装mysql的驱动程序么
回 jiangtao9999:
因为一直在.net下开发,对linux和c开发基本空白,习惯了.net下"程序集"这个东西,要用什么,直接引用到项目中,比如要连接mysql,只要下载mysql提供程序集,也就是一个dll,把这个dll包含到项目中,项目只要拷到别人机器上就可以运行了,别人运行这个程序不需要任何安装mysql驱动的工作。
现在linux 环境下,不了解怎么实现的,搜索网络得知,要自己去安装一个mysql库.我的意思是可以类似.net那样把这个库文件包含用项目里就可以了么。

老大,原来你连 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 的。
参考技术A 和.net同样的道理,你在.net也需要在你的部署包中包含dll才能去连接,除非你静态联接了相关的code, 在linux下你需要下载mysql的C库开发包(libmysql++-dev libmysql++2c2a libmysqlclient15-dev libmysqlclient15off) 这里面已经包含了动态库和静态库,如果是静态库链接,你就只需要把你的程序部署给别人即可,如果是动态链接,还需要把相关的.so也包含在你的部署包中分发给使用者本回答被提问者采纳 参考技术B #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下的动态链接库)
参考技术C Mysql安装完有一个lib文件夹和一个include文件夹,将头文件和库文件引入,就可以连接了。写完的程序放在没有mysql的地方也可以远程连接,不过参数要写对。mysql提供了一堆的C接口,封装下用就好。

linux学习之centos--centos6.5下mysql数据库的安装及c/c++连接使用mysql(代码片段)

...),故今天自己鼓捣了一下Mysql数据库的安装以及C/C++连接使用Mysql。一、首先是mysql的安装第一步,我们可以先 查看详情

linux学习之centos--centos6.5下mysql数据库的安装及c/c++连接使用mysql(代码片段)

...),故今天自己鼓捣了一下Mysql数据库的安装以及C/C++连接使用Mysql。一、首先是mysql的安装第一步,我们可以先 查看详情

linuxcentos7下:用c语言连接mysql数据库(代码片段)

要想进行C语言连接MySQL数据库的操作,那么首先要安装数据库,安装数据库挺简单的,建议看一下这个帖子传送门,这个还是很详细的。等到MySQL安装完毕之后,就可以在C语言下连接MySQL数据库了。首先要安装... 查看详情

mysql----c语言连接(简略)(代码片段)

C语言连接头文件和库文件makefileMYSQLCAPIBasicDataStructuresFunctionmysql_init()mysql_real_connect()mysql_query()mysql_store_result()其他函数头文件和库文件如果/usr/include下没有mysql.h,/lib64下没有mysql相关库文件,需要到官网下载,将 查看详情

mysql----c语言连接(简略)(代码片段)

C语言连接头文件和库文件makefileMYSQLCAPIBasicDataStructuresFunctionmysql_init()mysql_real_connect()mysql_query()mysql_store_result()其他函数头文件和库文件如果/usr/include下没有mysql.h,/lib64下没有mysql相关库文件,需要到官网下载,将 查看详情

mysql使用c语言连接(代码片段)

文章目录MySQL使用C语言连接引入库下载库文件在项目中使用库使用库连接数据库下发SQL请求获取查询结果MySQL使用C语言连接引入库要使用C语言连接MySQL,需要使用MySQL官网提供的库。下载库文件下载库文件首先,进入MySQL... 查看详情

数据库连接c语言(代码片段)

数据库连接C语言连接mysql接口介绍初始化链接数据库下发mysql命令获取执行结果获取结果行数获取结果列数获取列名获取结果内容关闭mysql链接连接rz-E压缩包tarxzfmysql-connector-c-6.1.11-linux-glibc2.12-x86_64.tar.gzmvmysql-connector-c-6.1.11-linux-g... 查看详情

linux学习之centos--centos6.5下mysql数据库的安装及c/c++连接使用mysql(代码片段)

...),故今天自己鼓捣了一下Mysql数据库的安装以及C/C++连接使用Mysql。一、首先是mysql的安装第一步,我们可以先看一下,我们的操作系统上是否已经安装了Mysql数据库,这个还是容易的(当然,肯定要先打开最重要的Terminal,即命令行... 查看详情

怎么在linux环境下通过c/c++语言连接oracle数据库

...听说过,我就是想看一下代码方面的东西!推荐你使用pc语言,用这个编写代码很容易对数据库oracle进行操作.各种操作都非常简单.例如:EXECSQLCONNECT:UserNameIDENTIFIEDBY:PassWordusing:ServerName;这样一个简单语句就可以实现连接数据库... 查看详情

linux下mysql的远程连接

本地计算机ip:192.168.1.100远程计算机ip:192.168.1.244  远程计算机打开mysql服务器:#/etc/init.d/mysql.serverstart  本地计算机连接远程mysql服务器:./mysql-h"192.168.1.244"-uroot-p  发生以下错误:  ERROR11 查看详情

linux下应用mysql数据库c编程,出现段错误求解!

linux下应用mysql数据库c编程,出现段错误求解!连接mysql数据库,从数据库中查询数据,获取结果集后,有获取成功,能输出到屏幕。但将其中的内容复制到程序中的字符串时一直出错,段错误。求解!!!参考技术A访问越界。... 查看详情

linux下mysql允许远程连接怎么设置

参考技术A您好!1、首先,mysql设置远程连接的方式是在linux中进入mysqlmysql-uroot-pxxxxx(该处为root密码)2、进入mysql后进行权限授权grantallprivilegeson*.*toroot@'%'identifiedby"xxxxxx"withgrantoption;flushprivileges;这样就可以远程连接mys... 查看详情

linux下mysql允许远程连接怎么设置

...口,mysql应该是3306(或者直接关闭防火墙);2、mysql开通连接权限:1:首次安装的mysql应该是没有密码,使用:mysql-uroot-p回车,直接进入到mysql>页面;2:开通需要对外连接的帐号权限:1、updatemysql.usersetpassword=PASSWORD('123456... 查看详情

c语言有mysql数据库连接池吗?

C语言有mysql数据库连接池吗?如何编写啊?我在网上找了很久了,可是一直没有找到。我知道有mysql的连接池。但是都是jsp和tomcat的连接池。我知道c语言和mysql该如何连接。我是说,怎么建立建立一个C语言和mysql的连接池。我在网... 查看详情

linux下mysql允许远程连接怎么设置

...iedforuser'root'@'localhost'(usingpassword:YES)不让这么连接数据库原因:是因为host对应的user字段是空的,我们需要将其改为root即可代码示例:mysql>selecthost,userfromuser;+---------- 查看详情

linux系统下,mysql以及禅道的安装/卸载

...ql,安装完成后启动数据库:servicemysqldstart) 3、远程连接MySQL:2 使用NavicatforMySQL连接Linux服务器,连接失败2 登 查看详情

perl连接mysql,dbi怎么安装?

RT,初学Perl,现在学到数据库编辑,要用Perl连接MySQL,DBI如何安装啊?请教了?参考技术A是什么系统?windows下的strawberryperl已经带了dbi和dbd了linux下,安装mysqlclient后,可以用下面的命令安装:perl-MCPAN-e'installDBI'perl-MCPAN-e&#... 查看详情

用c语言编写的程序,能不能直接在linux下运行?

...可以直接拿到linux下执行。3.在linux系统下可不可以执行C语言写的程序。当然应该不可能是地三个意思了。如果是第二个意思,那么答案是:肯定不能执行。因为C语言是于系统有关的。所以在window下编译的可执行文件,和在linux... 查看详情