首页 > 数据库 >Linux环境下C语言连接数据库

Linux环境下C语言连接数据库

时间:2023-04-15 10:01:01浏览次数:30  
标签:Linux 句柄 数据库 MYSQL C语言 result mysql NULL 连接

Linux环境下C语言操作Mysql数据库

1.初始化句柄:mysql_init()

MYSQL *mysql_init(MYSQL *mysql)

分配或初始化与mysql_real_connect()相适应的MYSQL对象。如果mysql是NULL指针,该函数将分配、初始化、并返回新对象。否则,将初始化对象,并返回对象的地址。如果mysql_init()分配了新的对象,当调用mysql_close()来关闭连接时。将释放该对象。初始化的MYSQL*句柄。如果无足够内存以分配新的对象,返回NULL。

2.连接数据库:mysql_real_connect()

MYSQL *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)

第1个参数是已有MYSQL结构的地址。调用mysql_real_connect()之前,必须调用mysql_init()来初始化MYSQL结构。

“host”的值必须是主机名或IP地址。如果“host”是NULL或字符串"localhost",连接将被视为与本地主机的连接。

“user”参数包含用户的MySQL登录ID。如果“user”是NULL或空字符串"",用户将被视为当前用户。在UNIX环境下,它是当前的登录名。

“passwd”参数包含用户的密码。如果“passwd”是NULL,仅会对该用户的(拥有1个空密码字段的)用户表中的条目进行匹配检查。这样,数据库管理员就能按特定的方式设置MySQL权限系统,根据用户是否拥有指定的密码,用户将获得不同的权限。

“db”是数据库名称。如果db为NULL,连接会将默认的数据库设为该值。

如果“port”不是0,其值将用作TCP/IP连接的端口号。(意思就是如果你修改过mysql默认的3306的端口话这里也需要修改成相应的 端口号,一般默认为0)

“unix_socket”一般默认为NULL

“client_flag”的值通常为0

如果连接成功,返回MYSQL*连接句柄。如果连接失败,返回NULL。对于成功的连接,返回值与第1个参数的值相同。

3. 数据库操作

3.1 mysql_query()

int mysql_query(MYSQL *mysql, const char *query)

MYSQL连接句柄和一个SQL语句字符串作为参数。执行成功时,返回0,否则返回非0值。经过查询语句后它的返回一个结果集对象存储在mysql_store_result()中。

3.2 mysql_store_result()

MYSQL_RES *mysql_store_result(MYSQL *mysql)

对于成功检索了数据的每个查询(SELECT、SHOW、DESCRIBE、EXPLAIN、CHECK TABLE等),调用mysql_store_result对结果集进行相应的操作。

mysql_store_result()将查询的全部结果读取到客户端,分配1个MYSQL_RES结构,并将结果置于该结构中。

如果查询未返回结果集,mysql_store_result()将返回Null指针(例如,如果查询是INSERT语句)。或者读取结果集失败,mysql_store_result()还会返回Null指针。

3.3 mysql_fetch_row()

MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)

该函数需要一个MYSQL_RES结构体指针作为参数,并返回一个MYSQL_ROW结构体指针,该结构体指针包含了查询结果中的一行数据,返回值为下一行的MYSQL_ROW结构。如果没有更多要检索的行或出现了错误,返回NULL。

3.4 mysql_num_fields()

unsigned int mysql_num_fields(MYSQL_RES *result)

返回结果集中的行数

3.5 mysql_field_count()

unsigned int mysql_field_count(MYSQL *mysql)

表示结果集中列数的无符号整数,注意这里的参数是mysql的句柄。

3.6 mysql_free_result()

void mysql_free_result(MYSQL_RES *result)

一旦完成了对结果集的操作,必须调用mysql_free_result()。

3.7 mysql_close()

void mysql_close(MYSQL *mysql)

关闭前面打开的连接。如果句柄是由mysql_init()或mysql_connect()自动分配的,mysql_close()还将解除分配由mysql指向的连接句柄。

参考资料

Myql官方说明:https://www.mysqlzh.com/api/51.html

标签:Linux,句柄,数据库,MYSQL,C语言,result,mysql,NULL,连接
From: https://www.cnblogs.com/mumu597/p/17320575.html

相关文章

  • springboot连接不同数据库的写法
    MySQL当url连接不指定/数据库名可以访问到mysql服务器上有权限的任何库,但是所有sql需要加上库名前缀.pom<dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency>配置spring:datasource:driver-class-n......
  • 数据库设计类软件
    PDManer元数建模PDManer元数建模,是一款多操作系统开源免费的桌面版关系数据库模型建模工具,相对于PowerDesigner,他具备界面简洁美观,操作简单,上手容易等特点。支持Windows,Mac,Linux等操作系统,也能够支持国产操作系统,能够支持的数据库如下:MySQL,PostgreSQL,Oracle,SQLServer等常见......
  • 逍遥自在学C语言 | 位运算符<<的高级用法
    前言在上一篇文章中,我们介绍了~运算符的高级用法,本篇文章,我们将介绍<<运算符的一些高级用法。一、人物简介第一位闪亮登场,有请今后会一直教我们C语言的老师——自在。第二位上场的是和我们一起学习的小白程序猿——逍遥。二、计算2的整数次幂代码示例#includ......
  • linux作业
    编写一个Shell脚本,根据键盘可以循环输入文件名,输入不存在文件或是目录名则提示后重新输入,按“q”或“Q”键退出。程序完成找出输入文件中所有含"YiBin"的行按格式“文件名,含YiBin的行”写入当前目录下文件notefile中。while:do read-p"input(q/Q退出):"file if[[$file......
  • #yyds干货盘点#Linux之find:查找目录下的文件
    【功能说明】find命令用于查找目录下的文件,同时也可以调用其他命令执行相应的操作。【语法格式】find[-H][-L][-P][-Ddebugopts][-olevel][pathname][expression]find[选项][路径][操作语句]1)注意find命令以及后面的选项和路径、操作语句,每个......
  • 【Windows / Linux】python 换 豆瓣源
    python换豆瓣源-直接运行Python代码即可 Windows版importospath=os.getenv('APPDATA')#获取环境变量data="""[global]timeout=6000index-url=http://pypi.douban.com/simple/trusted-host=pypi.douban.com"""#写入的数据fo......
  • WiFi协议曝安全漏洞:Linux、Android和iOS未能逃脱
    来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Android和iOS的各种设备。来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Androi......
  • WiFi协议曝安全漏洞:Linux、Android和iOS未能逃脱
    来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Android和iOS的各种设备。来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Androi......
  • WiFi协议曝安全漏洞:Linux、Android和iOS未能逃脱
    来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Android和iOS的各种设备。来自美国东北大学和鲁汶大学的学者披露了一组IEEE802.11Wi-Fi协议标准的一个基础设计漏洞,影响到运行Linux、FreeBSD、Androi......
  • Net6+NLog 写入数据库 Sql Server为例
    这个百度一大片,到处不行,国外网站找也是有问题,官网文档也是有点操蛋。搞到现在ok了直接上代码。//Program.cs配置#region日志LogManager.LoadConfiguration(ParameterConfig.Nlog).GetCurrentClassLogger();builder.Logging.AddNLog(ParameterConfig.Nl......