Linux下C对MYSQL数据库的操作

本文介绍如何使用C语言通过Linux平台连接和操作MySQL数据库,包括连接数据库、执行SQL语句、处理查询结果及关闭数据库连接等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

进行Linux CMYSQL需要用到下面的数据类型:MYSQL       MYSQL_RES(结果集合)   MYSQL_ROW(记录)         MYSQL_FIELD(字段)

Linux下用c进行MYSQL数据库的访问分为以下几个步骤:

1.         连接数据库

l  MYSQL* mysql_init(MYSQL* mysql_ptr)

在进行连接数据库前要初始化一个MYSQL结构,然后调用mysql_init()初始化结构(含分配内存空间),若传递结构为NULL则代表初始化一个新结构。

l  int mysql_options(MYSQL* mysql_ptr,enum mysql_option option,const char *arg)

接下来可以使用mysql_options()进行设置数据库额外的连接选项。

l  MYSQL* mysql_real_connect(MYSQL* mysql_ptr,const char* host,const char* user,const char* password,const char* db,unsigned int port,const char* unix_socket,unsigned int client_flag)

最后用mysql_real_connect()进行数据库的连接。

2.         处理数据

l  int mysql_query(MYSQL* mysql_ptr,const char* sqlstring)

调用mysql_query()执行sql语句。

l  不返回数据型(执行insertupdatedelete

my_ulonglong mysql_affected_rows(MYSQL* mysql_ptr)

该函数用来返回受影响的行数。在用printf时推荐用%lu

l  返回数据型(执行select

对于返回数据型的通常分为几个步骤,在用mysql_query()发出查询之后需要检索存储数据

Ø  MYSQL_RES*mysql_store_result(MYSQL* mysql_ptr)

此函数从数据库服务器中检索所有满足条件的数据并将它存放在客户端(消耗资源),并用结果集合结构类型指针指向。如果没有数据或调用失败则返回null值。

my_ulonglong mysql_num_rows(MYSQL_RES* res_ptr)

当有数据时可以调用mysql_num_rows()返回结果集合中数据的行数。

void mysql_data_seek(MYSQL_RES* res_ptr,unsigned long linenum)

该函数可以在结果集合中定位任意行linenum为从0到记录个数减1的行号,0为第一行记录。

MYSQL_ROW_OFFSET mysql_row_tell(MYSQL_RES* res_ptr)

该函数返回一个偏移量,表示结果集合中的当前位置。

MYSQL_ROW_OFFSET mysql_row_seek(MYSQL_RES res_ptr,MYSQL_ROW_OFFSET offset)

这个函数用于在结果集合中移动当前位置,移动参数为偏移量。与mysql_row_tell()在记录集中已知点的跳转很有用。

Ø  MYSQL_RES* mysql_use_result(MYSQL* mysql_ptr)

此函数返回时并没有将任何数据放到结果集中,而仅仅是将结果集合初始化来接收数据。检索数据需要反复调用mysql_fetch_row(),直到检索完所有数据。使用此函数,将不能使用mysql_num_rowmysql_data_seekmysql_row_tellmysql_row_seek

l  处理数据

MYSQL_ROW mysql_fetch_row(MYSQL* res_ptr)

该函数用于从结果集中返回一条记录。

unsigned int mysql_field_count(MYSQL* mysql_ptr),注意参数类型。

该函数返回结果集合中字段的数量,还可以判断mysql_store_result()为何失败(如果result返回null,但是该函数返回值大于0,则表明在进行检索数据过程中出现了错误;若该函数返回0,则表明没有检索到列)

MYSQL_FIELD* mysql_fetch_field(MYSQL_RES* res_ptr)

该函数返回结果集合中字段的定义。(如:name为字段的名称,具体查看mysql.h中的定义)IS_NUM()宏可以用来判断字段类型是否为数字型。

MYSQL_FIELD_OFFSET mysql_field_seek(MYSQL_RES*res_ptr,MYSQL_FIELD_OFFSET offset)

该函数将字段当前位置设置到给定的偏移量,0为第一个字段。

每一条记录row为字段数据数组(字符串数组),显示字段值时用row[n]n0field_count

l  void mysql_free_result(MYSQL_RES* res_ptr)

在使用完结果集后调用mysql_free_result()MYSQL数据库进行必要的整理工作。

3.         关闭数据库

void mysql_close(MYSQL* mysql)

数据库在使用完后应当进行关闭,调用mysql_close()进行关闭,mysql被清除。

错误处理

unsigned int mysql_errno(MYSQL* mysql_ptr)

const char* mysql_error(MYSQL* mysql_ptr)

对于mysql_ptr指定的连接,mysql_errno()返回最近调用的函数返回的错误代码,mysql_error则返回错误的文字信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值