MySQL学习笔记_11_Linux下C++/C连接MySQL数据库(一)_MySQL
Linux学习笔记
bitsCN.comLinux 下 C++/C 连接 MySQL 数据库(一)
一、连接前准备
原材料:Ubuntu12.04LTS
(已经安装了MySQL5.5或者更高级版本,新立得软件包,gcc/g++或者CodeBlosks编译器)
安装了以上的软件包后,我们可以正常使用MySQL完成数据管理工作,但是很多时候我们需要通过编写程序访问MySQL。此时,在程序中需要加载MySQL驱动头文件,但是默认这些驱动包是没有安装的,因此我们需要在新立得中找到"libmysqld-dev"包并安装。
安装完成之后,在”/usr/include/mysql/”目录下会有很多相对应的头文件,如mysql.h等。
当写好程序,需要编译时:
1、如果选用的是使用gcc/g++在命令行下完成,则需要加上-lmysqlclient选项。如:
g++ -lmysqlclient mysql_test.cc -o mysqltest
2、如果选用的是CodeBlocks,则需在构建选项中,将连接库设为mysqlclient。
开始编译。
二、头文件及相关函数分析
这篇博客中所列的函数全部包含在头文件
#include <mysql/mysql.h>
1、用CAPI连接MySQL数据库有两个步骤:
1)初始化一个连接句柄
2)建立连接
所用到的函数如下:
MYSQL *mysql_init(MYSQL *connection); // 初始化连接句柄//成功返回MySQL结构指针,失败返回NULLMYSQL *mysql_real_connect(MYSQL *connection, const char *server_host, const char *sql_user_name, const char *sql_password, const char *db_name, unsigned int port_number, const char *unix_socket_name, unsigned int flags); //建立连接//成功返回MySQL结构指针,失败返回NULL
2、MySQL连接工作完成之后,需要对MySQL的连接进行释放
void mysql_close(MYSQL *connection); //关闭连接//参数connection被清空,指针变为无效
3、mysql_options用于设置额外选项,并影响连接行为,但是它只能在mysql_init和mysql_real_connect之间调用
int mysql_options(MYSQL *connection, enum mysql_option option, const char *argument); //设置连接选项
option的值为下列四个值之一:
MYSQL_INIT_COMMAND //连接到MySQL服务器时将执行的命令,再次连接时将自动再次执行。MYSQL_OPT_CONNECT_TIMEOUT //连接超时前的等待秒数MYSQL_OPT_COMPRESS //网络连接中使用压缩机制MYSQL_OPT_PROTOCOL //要使用的协议类型,影视mysql.h中定义的mysql_protocol_type枚举值之一
4、以上的函数是在假设没有错误的情况下运行,如果数据库连接过程中出现了错误,我们就需要以下两个函数来处理错误信息:
unsigned int mysql_errno(MYSQL *connection); //返回错误代码(0表示为出现错误) char *mysql_error(MYSQL *connection); //返回错误信息,是以NULL作为终结的字符串
5、程序访问数据库不只是与数据库建立连接,更重要的是通过SQL语句的执行查询或改变数据库中数据。执行SQL语句可以通过下列函数实现。
int mysql_query(MYSQL *connection, const char *query);
SQL语句分为两类,返回数据的SQL和不返回数据的SQL(UPDATE、DELETE、INSERT)。
下面我们只介绍不返回数据的SQL
my_ulonglong mysql_affected_rows(MYSQL *connection); //返回查询受影响的行//对一段SQL语句执行后可以通过调用此函数查看SQL语句执行后,数据库中数据状态改变的行数,以此判断SQL的执行成功与否。
三、实例
#include#include #include #include <mysql/mysql.h>using namespace std;void mysql_err_function(MYSQL * connection);int main(){ //freopen("input.txt","r",stdin); MYSQL * connection; connection = mysql_init(NULL); if (!connection) { cout << "mysql_init failed!" << endl; exit(-1); } if (!mysql_real_connect(connection,"localhost","root","123456","test",0,NULL,0)) { cout << "Connection To MySQL failed!" << endl; mysql_err_function(connection); } cout << "Connection To MySQL Server is Success..." << endl; string str; getline(cin,str); int res = 0; int affected_count = 0; while (str != "close" && str != "" && !res) { res = mysql_query(connection,str.c_str()); affected_count += mysql_affected_rows(connection); if (res) { if (mysql_errno(connection)) { cout << "Error " << mysql_errno(connection) << " : " << mysql_error(connection) << '/n' << endl; break; } } getline(cin,str); } cout << "Have affected " << affected_count << " rows!" << endl; mysql_close(connection); cout << "Connection To MySQL Server is closed..." << endl; return 0;}void mysql_err_function(MYSQL * connection){ if (mysql_errno(connection)) { cout << "Error " << mysql_errno(connection) << " : " << mysql_error(connection) << endl; exit(-1); }}

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

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

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)

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.

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

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.

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.

PHP est un langage de programmation back-end largement utilisé dans le développement de sites Web. Il possède de puissantes fonctions d'exploitation de bases de données et est souvent utilisé pour interagir avec des bases de données telles que MySQL. Cependant, en raison de la complexité du codage des caractères chinois, des problèmes surviennent souvent lorsqu'il s'agit de caractères chinois tronqués dans la base de données. Cet article présentera les compétences et les pratiques de PHP dans la gestion des caractères chinois tronqués dans les bases de données, y compris les causes courantes des caractères tronqués, les solutions et des exemples de code spécifiques. Les raisons courantes pour lesquelles les caractères sont tronqués sont des paramètres de jeu de caractères incorrects dans la base de données : le jeu de caractères correct doit être sélectionné lors de la création de la base de données, comme utf8 ou u.

Les meilleures options du compilateur pour optimiser les performances des fonctions C++ sont : Niveau d'optimisation : O2 Inlining de fonction : -finline-functions Déroulement de boucle : -funroll-loops Auto-vectorisation : -ftree-vectorize Threading : -fopenmp
