CAPI--linux上c语言读取数据库内容(mysql)_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; }
运行的命令和代码如下:

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Le langage Go est un langage de programmation efficace, concis et facile à apprendre. Il est privilégié par les développeurs en raison de ses avantages en programmation simultanée et en programmation réseau. Dans le développement réel, les opérations de base de données font partie intégrante. Cet article explique comment utiliser le langage Go pour implémenter les opérations d'ajout, de suppression, de modification et de requête de base de données. Dans le langage Go, nous utilisons généralement des bibliothèques tierces pour faire fonctionner les bases de données, telles que les packages SQL couramment utilisés, gorm, etc. Ici, nous prenons le package SQL comme exemple pour présenter comment implémenter les opérations d'ajout, de suppression, de modification et de requête de la base de données. Supposons que nous utilisons une base de données MySQL.

Le mappage polymorphe Hibernate peut mapper les classes héritées à la base de données et fournit les types de mappage suivants : join-subclass : crée une table séparée pour la sous-classe, incluant toutes les colonnes de la classe parent. table par classe : créez une table distincte pour les sous-classes, contenant uniquement des colonnes spécifiques aux sous-classes. union-subclass : similaire à join-subclass, mais la table de classe parent réunit toutes les colonnes de la sous-classe.

Basées sur l'optimisation continue de grands modèles, les agents LLM, ces puissantes entités algorithmiques ont montré leur potentiel pour résoudre des tâches de raisonnement complexes en plusieurs étapes. Du traitement du langage naturel à l'apprentissage profond, les agents LLM deviennent progressivement le centre d'intérêt de la recherche et de l'industrie. Ils peuvent non seulement comprendre et générer le langage humain, mais également formuler des stratégies, effectuer des tâches dans divers environnements et même utiliser des appels d'API et du codage pour créer. solutions. Dans ce contexte, l'introduction du framework AgentQuest constitue une étape importante. Il fournit non seulement une plate-forme d'analyse comparative modulaire pour l'évaluation et l'avancement des agents LLM, mais fournit également aux chercheurs des outils puissants pour suivre et améliorer les performances de ces agents à un moment donné. niveau plus granulaire

Les dernières versions d'Apple des systèmes iOS18, iPadOS18 et macOS Sequoia ont ajouté une fonctionnalité importante à l'application Photos, conçue pour aider les utilisateurs à récupérer facilement des photos et des vidéos perdues ou endommagées pour diverses raisons. La nouvelle fonctionnalité introduit un album appelé "Récupéré" dans la section Outils de l'application Photos qui apparaîtra automatiquement lorsqu'un utilisateur a des photos ou des vidéos sur son appareil qui ne font pas partie de sa photothèque. L'émergence de l'album « Récupéré » offre une solution aux photos et vidéos perdues en raison d'une corruption de la base de données, d'une application d'appareil photo qui n'enregistre pas correctement dans la photothèque ou d'une application tierce gérant la photothèque. Les utilisateurs n'ont besoin que de quelques étapes simples

HTML ne peut pas lire directement la base de données, mais cela peut être réalisé via JavaScript et AJAX. Les étapes comprennent l'établissement d'une connexion à la base de données, l'envoi d'une requête, le traitement de la réponse et la mise à jour de la page. Cet article fournit un exemple pratique d'utilisation de JavaScript, AJAX et PHP pour lire les données d'une base de données MySQL, montrant comment afficher dynamiquement les résultats d'une requête dans une page HTML. Cet exemple utilise XMLHttpRequest pour établir une connexion à la base de données, envoyer une requête et traiter la réponse, remplissant ainsi les données dans les éléments de la page et réalisant la fonction de lecture HTML de la base de données.

Comment utiliser MySQLi pour établir une connexion à une base de données en PHP : Inclure l'extension MySQLi (require_once) Créer une fonction de connexion (functionconnect_to_db) Appeler la fonction de connexion ($conn=connect_to_db()) Exécuter une requête ($result=$conn->query()) Fermer connexion ( $conn->close())

Pour gérer les erreurs de connexion à la base de données en PHP, vous pouvez utiliser les étapes suivantes : Utilisez mysqli_connect_errno() pour obtenir le code d'erreur. Utilisez mysqli_connect_error() pour obtenir le message d'erreur. En capturant et en enregistrant ces messages d'erreur, les problèmes de connexion à la base de données peuvent être facilement identifiés et résolus, garantissant ainsi le bon fonctionnement de votre application.

1. Spécifications du code pendant le travail de reconstruction en arrière-plan : pendant le processus de développement frontal B-end, les développeurs seront toujours confrontés au problème du développement répété. Les modules d'éléments de nombreuses pages CRUD sont fondamentalement similaires, mais ils doivent toujours être développés manuellement. , et du temps est consacré à la construction d'éléments simples, ce qui réduit l'efficacité du développement des exigences de l'entreprise. Dans le même temps, étant donné que les styles de codage des différents développeurs sont incohérents, le démarrage des itérations est plus coûteux pour les autres. L’IA remplace la simple intelligence : avec le développement continu de grands modèles d’IA, elle possède des capacités de compréhension simples et peut convertir le langage en instructions. Les instructions générales pour la création de pages de base peuvent répondre aux besoins de création quotidienne de pages de base et améliorer l'efficacité du développement commercial dans des scénarios généraux. 2. Générez une liste de liens. Les listes de pages, les formulaires et les détails du support B peuvent être grossièrement divisés dans les catégories suivantes :
