C API--linux上c语言读取数据库内容(mysql)

要想知道怎么通过c语言操作数据库,必须要了解这几个结构体的含义,这里只是简单说一下如果想要了解的更深入可以到网上搜一下

C API数据类型

1、MYSQL结构代表一个数据库连接的句柄,包含有关服务器的连接状态的信息,几乎所有的函数均使用到他。要连接MySQL,必须建立MYSQL实例,通过mysql_init初始化方能开始连接。

2、MYSQL_RES结果代表返回的查询结果(select,show等)。也将查询的返回的信息成为“结果集”。在c的API里对应的就是MYSQL_RES了,从数据库读取数据,最后从MYSQL_RES中读取数据。

3、MYSQL_ROW这是一个行数据的类型安全(type-safe)的表示。当前它实现为一个计数字节的字符串数组。(如果字段值可能包含二进制数据,你不能将这些视为空终止串,因为这样的值可以在内部包含空字节)
行通过调用mysql_fetch_row()获得。

这里归纳了C API可使用的函数,详见MYSQL手册


函数


描述


mysql_affected_rows()


返回上次UPDATE、DELETE或INSERT查询更改/删除/插入的行数。


mysql_autocommit()


切换 autocommit模式,ON/OFF


mysql_change_user()


更改打开连接上的用户和数据库。


mysql_charset_name()


返回用于连接的默认字符集的名称。


mysql_close()


关闭服务器连接。


mysql_commit()


提交事务。


mysql_connect()


连接到MySQL服务器。该函数已不再被重视,使用mysql_real_connect()取代。


mysql_create_db()


创建数据库。该函数已不再被重视,使用SQL语句CREATE DATABASE取而代之。


mysql_data_seek()


在查询结果集中查找属性行编号。


mysql_debug()


用给定的字符串执行DBUG_PUSH。


mysql_drop_db()


撤销数据库。该函数已不再被重视,使用SQL语句DROP DATABASE取而代之。


mysql_dump_debug_info()


让服务器将调试信息写入日志。


mysql_eof()


确定是否读取了结果集的最后一行。该函数已不再被重视,可以使用mysql_errno()或mysql_error()取而代之。


mysql_errno()


返回上次调用的MySQL函数的错误编号。


mysql_error()


返回上次调用的MySQL函数的错误消息。


mysql_escape_string()


为了用在SQL语句中,对特殊字符进行转义处理。


mysql_fetch_field()


返回下一个表字段的类型。


mysql_fetch_field_direct()


给定字段编号,返回表字段的类型。


mysql_fetch_fields()


返回所有字段结构的数组。


mysql_fetch_lengths()


返回当前行中所有列的长度。


mysql_fetch_row()


从结果集中获取下一行


mysql_field_seek()


将列光标置于指定的列。


mysql_field_count()


返回上次执行语句的结果列的数目。


mysql_field_tell()


返回上次mysql_fetch_field()所使用字段光标的位置。


mysql_free_result()


释放结果集使用的内存。


mysql_get_client_info()


以字符串形式返回客户端版本信息。


mysql_get_client_version()


以整数形式返回客户端版本信息。


mysql_get_host_info()


返回描述连接的字符串。


mysql_get_server_version()


以整数形式返回服务器的版本号。


mysql_get_proto_info()


返回连接所使用的协议版本。


mysql_get_server_info()


返回服务器的版本号。


mysql_info()


返回关于最近所执行查询的信息。


mysql_init()


获取或初始化MYSQL结构。


mysql_insert_id()


返回上一个查询为AUTO_INCREMENT列生成的ID。


mysql_kill()


杀死给定的线程。


mysql_library_end()


最终确定MySQL C API库。


mysql_library_init()


初始化MySQL C API库。


mysql_list_dbs()


返回与简单正则表达式匹配的数据库名称。


mysql_list_fields()


返回与简单正则表达式匹配的字段名称。


mysql_list_processes()


返回当前服务器线程的列表。


mysql_list_tables()


返回与简单正则表达式匹配的表名。


mysql_more_results()


检查是否还存在其他结果。


mysql_next_result()


在多语句执行过程中返回/初始化下一个结果。


mysql_num_fields()


返回结果集中的列数。


mysql_num_rows()


返回结果集中的行数。


mysql_options()


为mysql_connect()设置连接选项。


mysql_ping()


检查与服务器的连接是否工作,如有必要重新连接。


mysql_query()


执行指定为“以Null终结的字符串”的SQL查询。


mysql_real_connect()


连接到MySQL服务器。


mysql_real_escape_string()


考虑到连接的当前字符集,为了在SQL语句中使用,对字符串中的特殊字符进行转义处理。


mysql_real_query()


执行指定为计数字符串的SQL查询。


mysql_refresh()


刷新或复位表和高速缓冲。


mysql_reload()


通知服务器再次加载授权表。


mysql_rollback()


回滚事务。


mysql_row_seek()


使用从mysql_row_tell()返回的值,查找结果集中的行偏移。


mysql_row_tell()


返回行光标位置。


mysql_select_db()


选择数据库。


mysql_server_end()


最终确定嵌入式服务器库。


mysql_server_init()


初始化嵌入式服务器库。


mysql_set_server_option()


为连接设置选项(如多语句)。


mysql_sqlstate()


返回关于上一个错误的SQLSTATE错误代码。


mysql_shutdown()


关闭数据库服务器。


mysql_stat()


以字符串形式返回服务器状态。


mysql_store_result()


检索完整的结果集至客户端。


mysql_thread_id()


返回当前线程ID。


mysql_thread_safe()


如果客户端已编译为线程安全的,返回1。


mysql_use_result()


初始化逐行的结果集检索。


mysql_warning_count()


返回上一个SQL语句的告警数。

下面看一下到底怎么通过C API操作数据库

下面的例子为读取数据库的表中的数据

#include <stdio.h>

#include <mysql.h>

#include <string.h>

int main()

{

MYSQL mysql;     //mysql连接

MYSQL_RES *res; //这个结构代表返回行的一个查询结果集

MYSQL_ROW row; //一个行数据的类型安全(type-safe)的表示

char *query;   //查询语句

int t,r;

mysql_init(&mysql);

if (!mysql_real_connect(&mysql,"localhost", "root", NULL, "test",0,NULL,0))

{

printf( "Error connecting to database: %s",mysql_error(&mysql));

}

else

{

printf("Connected...\n");

}

query=" select * from qq";

t=mysql_real_query(&mysql,query,(unsigned int)strlen(query));//执行指定为计数字符串的SQL查询。

if(t)

{

printf("执行显示时出现异常: %s",mysql_error(&mysql));

}

res=mysql_store_result(&mysql);//检索完整的结果集至客户端。

printf("姓名\t学号\t年龄\t\n");

while(row=mysql_fetch_row(res))

{

for(t=0;t<mysql_num_fields(res);t++)

{

printf("%s\t" ,row[t]);

}

printf("\n");

}

mysql_free_result(res);//释放结果集使用的内存。

mysql_close(&mysql);

return 0;

}

运行的命令和代码如下:

其实它是很简单的东西。

时间: 2024-10-10 08:11:00

C API--linux上c语言读取数据库内容(mysql)的相关文章

DBA_在Linux上安装Oracle 11g数据库(案例)

1 DBA_在Linux上安装Oracle 11g数据库(案例)

[转载]linux上用PHP读取WORD文档

在linux上用PHP读取WORD文档,其实是使用了 antiword程序把word文档转化为txt文档. 再使用php执行系统命令调用而已. 具体操作如下: 1.安装antiword 官方站:http://www.winfield.demon.nl/ 下载地:http://www.winfield.demon.nl/linux/antiword-0.37.tar.gz 下载完,解压,进入目录 使用命令 make && make install 即可完成安装. 安装时,自动安装到了/roo

.NET跨平台之旅:升级至ASP.NET 5 RC1,Linux上访问SQL Server数据库

今天微软正式发布了ASP.NET 5 RC1(详见Announcing ASP.NET 5 Release Candidate 1),.NET跨平台迈出了关键一步. 紧跟这次RC1的发布,我们成功地将运行在Linux上的示例站点(http://about.cnblogs.com)升级到了ASP.NET 5 RC1,并且增加了数据库访问功能——基于Entity Framework 7 RC1访问SQL Server数据库. 示例站点页面左侧的导航是从数据库读取数据动态加载的,数据库服务器用的是阿里

Linux下C语言操作数据库

MySQL是Linux系统下广泛使用的开源免费数据库,是Linux应用程序数据存储的首选. 在Ubuntu系统下安装MySQL,可以在终端提示符中运行下列命令: $sudo apt-get install mysql-server mysql-client 一旦安装完成,MySQL服务器应该自动启动,默认的MySQL安装后用户为root,安装过程中会提示你enter password,这个密码便是你以后登陆数据库所需的密码. MySQL可以用不同的语言进行访问,其中包括C,C++,JAVA,Pe

在linux上静默安装oracle数据库

[[email protected] ~]# cat /etc/oracle-release Oracle Linux Server release 7.0 [[email protected] ~]# cat /etc/hosts 127.0.0.1  localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.1.7 thdldb01 [[email protected] ~]#cd /etc/yum.

在linux上安装完oracle数据库后,如何修改ORACLE_HOSTNAME

1.修改HOSTS文件,添加JTWF到本机IP地址的映射: [[email protected] home]# gedit /etc/hosts 最后一行为添加的: 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 16.54.136.81 JTWF 2

用Python实现阿里钉钉机器人读取数据库内容自动发群通知

最近想把一些预警数据信息按照一定的要求自动发送到移动端APP,最终把目标放在了腾讯的微信和阿里的钉钉软件上,由于刚开始学习python,于是编程工具想用python来实现.微信使用群体最广,通过一天的研究用itchat库已经实现,但由于itchat需要用web微信方式登录,发现微信对新注册的用户关闭了web微信功能,于是考虑用备选方案阿里钉钉来实现,其实阿里钉钉虽然没有微信用户群体庞大,但是在企业应用方面比微信强大了太多,很多企业已经开始开始用钉钉作为内部沟通工具. 一.工作准备 1.Pytho

c#读取数据库内容

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Data.SqlClient;//引用 namespace 访问数据库 { class Program { static void Main(string[] args) { //定义一个变量承载数据库 位置 "server=.;表示 本地

SQLite之读取数据库内容

1.打开已有数据库. //打开数据库 - (BOOL )openDB {// 红色部分修改为自己的数据库路径 return (SQLITE_OK == sqlite3_open([@"/Users/apple/Desktop/TEXT/Black/Black/province_city_zone.db" UTF8String], &db)); } 2.用SELECT 字段 FROM 表 字符串sql,获得表并使用. SQLITE_OK == sqlite3_prepare_v2