Connexion à distance C++ à la base de données MySQL

1. Une idée

Je suis récemment devenu obsédé par la base de données MySQL, et j'ai l'impression que beaucoup d'informations peuvent être stockées dans la base de données (c'est plus nécessaire pour moi avec une amnésie sévère). Parce que j'apprends aussi le langage C++, j'ai pensé à utiliser le langage C++ pour faire fonctionner mysql.De plus, ma base de données est installée sur l'ordinateur du laboratoire, j'ai donc pensé qu'il serait bon de pouvoir se connecter à mysql à distance. Avec cette idée en tête, j'ai trouvé de nombreux articles de blog sur Internet, mais peu d'entre eux répondaient pleinement à mes besoins. Mais il y a encore un peu d'aide, laissez-moi au moins avoir l'idée de connecter mysql sous vs2019, ce qui suit est mon expérience pratique.
C'est uniquement pour l'enregistrement, pour référence future et pour étudier avec tout le monde, s'il y a une inadéquation, veuillez m'excuser !

2. Le processus de fonctionnement réel et les captures d'écran

2.1 Introduction du logiciel et du matériel

软件:vs2019,mysql5.7(装在另一台机器上),win10 家庭版 64位
编程语言:C++

2.2 Processus pratique

  1. Copiez les répertoires include et lib du fichier d'installation mysql sur la machine distante vers l'ordinateur local. Par exemple, MySQL sur mon ordinateur distant est installé par défaut, donc le répertoire d'installation est C:\Program Files\MySQL\MySQL Server 5.7, l'ordinateur local, je l'ai copié dans le répertoire D:\app\mysqlCpp, et les résultats sont les suivants :
    2.2.1
  2. Ouvrez vs2019, créez un nouveau projet vide, cliquez avec le bouton droit sur le nom du projet , sélectionnez les propriétés , sélectionnez le répertoire VC++ dans la colonne de gauche de la fenêtre contextuelle des propriétés du projet et ajoutez les chemins des dossiers include et lib que vous venez de copier dans le répertoire include et le répertoire de la bibliothèque respectivement, la capture d'écran de l'opération spécifique est la suivante :
    insérez la description de l'image ici
  3. Cliquez ensuite sur l'éditeur de liens sous la barre d'options à gauche , sélectionnez input , entrez libmysql.lib après les dépendances supplémentaires dans le cadre de droite , et enfin cliquez sur OK. Capture d'écran ci-dessous :
    insérez la description de l'image ici
  4. Enfin, vous devez copier le fichier libmysql.dll dans le répertoire lib précédemment copié vers le répertoire racine du projet.Cette étape est très importante, car vs2019 se connecte à la base de données distante en chargeant le fichier de bibliothèque dynamique. La capture d'écran est la suivante : jusqu'à présent, toutes les opérations de configuration sont terminées et l'étape suivante consiste à entrer dans le sujet - "commencer à écrire du code pour se connecter à mysql !
    insérez la description de l'image ici

2.3 Tests

Interrogez simplement les enregistrements de la table et de la sortie, pas grand chose à dire, mettez simplement le code directement

#include <iostream>
#include <string>
#include <mysql.h>
#include<iomanip>

using namespace std;

void sqlselect(MYSQL*, const char*);     //测试查询数据 

MYSQL* mysql = NULL;

int main()
{
	//初始化MySQL连接句柄
	mysql = mysql_init((MYSQL*)0);

	mysql_real_connect
	(
		mysql,
		"10.255.60.194", //主机ip地址
		"root", //数据库用户名
		"这里输入你的root用户的密码", //数据库密码
		"要连接的库名", //数据库名称
		3306, //数据库端口,0表示默认端口(即3306)
		NULL, //如果unix_socket不是NULL,字符串指定套接字或应该被使用的命名管道。注意host参数决定连接的类型
		0 //通常是0
	);

	if (!mysql) //连接失败
	{
		cout << "Connection error: " << mysql_errno(mysql) 
			 << ", " << mysql_error(mysql) << endl;
	}

	const char* command = "select * from 表名"; //查询指令

	// 改变编码格式
	mysql_set_character_set(mysql, "GB2312");

	sqlselect(mysql, command); //查询数据  

	mysql_close(mysql); //关闭连接  

	return 0;
}

void sqlselect(MYSQL* mysql, const char* command)
{

	int flag = mysql_real_query(mysql, command, strlen(command));

	if (flag)
	{
		cout << "Select error: " << mysql_errno(mysql) << ", " << mysql_error(mysql) << endl;
		return;
	}

	MYSQL_RES* res = mysql_store_result(mysql); //读取将查询结果   
	MYSQL_FIELD* field = mysql_fetch_fields(res); //获取所有列名
	int field_count = mysql_field_count(mysql); //获取列数

												//输出所有列名
	for (int i = 0; i < field_count; i++)
		cout << setw(15) << field[i].name;

	cout << endl;

	//遍历输出每一行数据  
	MYSQL_ROW row;
	while (row = mysql_fetch_row(res))
	{
		for (int i = 0; i < field_count; i++)
			cout << setw(15) << row[i];
		cout << endl;
	}
}

Remarque : Ce code n'est pas original ! Cependant, je l'ai un peu modifié, et il peut être lancé directement en le copiant !
résultat de l'opération :
succès

3. Résumé

J'ai l'impression qu'il y a encore beaucoup de choses à apprendre, mais j'ai finalement terminé l'une de mes propres idées. J'apprécie toujours tout le processus maintenant que j'y pense. Après tout, j'ai essentiellement atteint mon objectif. Enfin, je voudrais merci à ces grands qui m'ont fourni des informations sur Internet.. Bien que je ne me connaisse pas, mais nous avons un sentiment commun !
Merci d'avoir lu, s'il y a quelque chose qui ne va pas, n'hésitez pas à laisser un message!

Astuce : S'il y a une erreur dans la connexion : Le serveur MySQL a disparu !
1. Vérifiez si l'ordinateur local et le serveur sont connectés à Internet.
2. Vérifiez si l'ordinateur distant a ouvert le service mysql.
3. Configurez la base de données mysql sur l'ordinateur distant pour autoriser la connexion à distance avec un mot de passe. L'opération spécifique est la suivante : Vous
insérez la description de l'image ici
pouvez également vous référer à : https://blog.csdn.net/golden_soft/article/details/85451604

Je suppose que tu aimes

Origine blog.csdn.net/dubulingbo/article/details/103208059
conseillé
Classement