So stellen Sie mit C++ eine Verbindung zu MySQL her

So stellen Sie mit C++ eine Verbindung zu MySQL her

C++ stellt zu Ihrer Information eine Verbindung zu MySQL her. Die spezifischen Inhalte sind wie folgt

Definieren der MySQLCon-Klasse

Klasse MySQLCon
{
 MySQLmysql;
öffentlich:
 int Fehlernummer;
 Zeichenfolge Fehlertext;
öffentlich:
 //MySQLCon() initialisieren);
 //Datenbank schließen~MySQLCon();
 //Mit Datenbank verbinden bool OpenConn(const char* host,const char* username,const char* pwd,const char* dbName,unsigned port=0);
 void GetErrorText();//Fehlertext abrufen void Close();//Datenbank schließen bool ExecuteSQL(const char* sql);//SQL-Anweisung verwenden, Daten können nicht empfangen werden bool QureySQL(const char* sql, vector<vector<string>>& resultSet);//SQL-Anweisung verwenden und Daten empfangen (Select-Anweisung)
};

Initialisierungsvorgang

MySQLCon::MySQLCon()
{
 wenn (mysql_library_init(0, nullptr, nullptr)) 
 {
 cout << "CAPI-Initialisierung fehlgeschlagen" << std::endl;
 getchar();
 Ausgang (1);
 }
 wenn (mysql_init(&mysql)==nullptr)
 {
 cout << "Datenbankvariablen konnten nicht initialisiert werden" << std::endl;
 getchar();
 Ausgang (1);
 }
 wenn (mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk"))
 {
 cout << "Verbindungsoptionen konnten nicht festgelegt werden" << std::endl;
 getchar();
 Ausgang (1);
 }
}

Herstellen einer Verbindung zum MySQL-Server

//Die Parameter sind Host, Benutzername, Passwort, Datenbankname, Portnummer bool MySQLCon::OpenConn(const char* Host, const char* Benutzername, const char* Pwd, const char* dbName, unsigned Port)
{
 //Verbindung zur Datenbank herstellen, wenn (mysql_real_connect(&mysql, Host, Benutzername, Passwort, Datenbankname, Port, nullptr, 0)==nullptr)
 {
 cout << "Verbindung zum MySQL-Server konnte nicht hergestellt werden" << std::endl;
 //Fehlertext abrufen GetErrorText();
 Ausgang (1);
 gibt false zurück;
 }
 gibt true zurück;
 
}

MySQL-Fehlerinformationen abrufen

void MySQLCon::GetErrorText()
{
 //Fehlercode abrufen errornum = mysql_errno(&mysql);
 //Fehlertext abrufen errortext = mysql_error(&mysql);
 //Fehlercode drucken cout << "error num: " << errornum << std::endl;
 //Fehlertext drucken cout << "Fehlertext: " << Fehlertext << std::endl;
 getchar();
}

Verwenden von SQL-Anweisungen in C++

bool MySQLCon::ExecuteSQL(const char* sql)
{
 //SQL-Anweisung verwenden, aber keine Daten empfangen, wenn (mysql_real_query(&mysql, sql, strlen(sql)))
 {
 GetErrorText();
 gibt false zurück;
 }
 gibt true zurück;
}
bool MySQLCon::QureySQL(const char* sql, Vektor<Vektor<Zeichenfolge>>& Ergebnismenge)
{
 //SQL-Anweisungen verwenden und Daten in Vektorcontainer empfangen, wenn (mysql_real_query(&mysql, sql, strlen(sql)))
 {
 GetErrorText();
 gibt false zurück;
 }
 //Erstellen Sie einen MYSQL-Ergebnissatz MYSQL_RES* result = mysql_store_result(&mysql);
 //Gesamtzahl der Zeilen und Spalten abrufen unsigned int rows = mysql_num_rows(result);
 unsigned int cols = mysql_num_fields(Ergebnis);
 // Wird verwendet, um ein Datenstück im Ergebnissatz MYSQL_ROW row aufzuzeichnen;
 während (Zeile = mysql_fetch_row(Ergebnis))
 {
 //Erstellen Sie einen Vektorcontainer, um die Daten im Zeilenvektor <string> lineDate zu speichern.
 für (int i = 0; i < Spalten; i++)
 {
 wenn (Zeile[i])
 {
 //Speichere die Daten jeder Spalte in der Zeile in lineDate lineDate.push_back(row[i]);
 }
 anders
 {
 lineDate.push_back("");
 }
 }
 //Gesamte Datenzeile im resultSet speichern resultSet.push_back(lineDate);
 }
 //Das Ergebnis freigeben setmysql_free_result(result);
 gibt true zurück;
}

Schließen Sie die Datenbank

void MySQLCon::Close()
{
 mysql_close(&mysql);
}
MySQLCon::~MySQLCon()
{
 Schließen();
 mysql_library_end();
}

Beispiel Hauptfunktion

int main()
{
 MySQLCon c_apiconn;
 c_apiconn.OpenConn("127.0.0.1", "root", "136119", "fancy");
 Zeichenfolge SQL = "Verwenden Sie Fancy;"
 Vektor<Vektor<Zeichenfolge>> Daten;
 c_apiconn.ExecuteSQL(sql.c_str());
 sql = "Wählen Sie * aus fancy.info;";
 c_apiconn.QureySQL(sql.c_str(), Daten);
 für (int i = 0; i < data.size(); i++)
 {
 für (int j = 0; j < data[i].size(); j++)
 {
 cout << Daten[i][j] << "\t";
 }
 cout << endl;
 }
 gebe 0 zurück;
}

Ausgabe

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Zusammenfassung zweier Methoden zum Herstellen einer Verbindung mit einer MySQL-Datenbank in C++
  • Herstellen einer Verbindung zur MySQL-Datenbank in C++ in Eclipse
  • Lösung für den LNK2019-Fehler, wenn C++ MySQL-Connector/C++ zur Verbindung mit MySQL verwendet
  • C/C++-Methode zum Herstellen einer Verbindung mit einer MySql-Datenbank
  • So stellen Sie in C++ eine Verbindung zu MySQL her (rufen Sie die C-API direkt auf)
  • Detaillierte Erklärung zur Verwendung der MySQL-API zum Verbinden und Bedienen von Datenbankbeispielen in C++
  • Zusammenfassung der Fehler beim Verbinden von C++ mit MySQL 5.6
  • Zusammenfassung der beim Verbinden von C++ mit MySQL aufgetretenen Probleme
  • C++ verwendet MySQLs eigene Header-Datei, um eine Verbindung zur Datenbank herzustellen
  • Zwei Möglichkeiten zum Herstellen einer Verbindung mit einer MySQL-Datenbank in C++ (ADO-Verbindung und MySQL-API-Verbindung)

<<:  So konfigurieren Sie die Portweiterleitung für Docker unter CentOS 7, damit sie mit der Firewall kompatibel ist

>>:  22 Vue-Optimierungstipps (Projektpraxis)

Artikel empfehlen

Professionelles und nicht-professionelles Webdesign

Zunächst einmal hängt die Gestaltung des Webseiten...

Lösung für langsame Netzwerkanforderungen im Docker-Container

Bei der Verwendung von Docker wurden mehrere Prob...

Verwendung und Beispiele für Linux-Befehle zur Echotextverarbeitung

Die Beschreibung von echo im Linux-Hilfedokument ...

Verstehen Sie die Grundlagen von Navicat für MySQL in einem Artikel

Inhaltsverzeichnis 1. Datenbankbetrieb 2. Datenty...

Wie implementiert Vue die Kommunikation zwischen Komponenten?

Inhaltsverzeichnis 1. Kommunikation zwischen Vate...

Vue implementiert die Drag & Drop-Sortierfunktion der Seiten-Div-Box

vue implementiert die Drag & Drop-Sortierfunk...

Entwickeln Sie eine Vue-Komponente, die Iframe kapselt

Inhaltsverzeichnis 1. Komponenteneinführung 2. In...

Einführung und Zusammenfassung der MySQL 8.0-Fensterfunktionen

Vorwort Vor MySQL 8.0 war es ziemlich mühsam, Dat...

Eine ausführliche Einführung in React-Referenzen

1. Was ist Refs wird in Computern als Resilient F...

Vue implementiert einen Scrollbar-Stil

Zuerst wollte ich den Stil der Bildlaufleiste des...

Vue implementiert das Hoch- und Herunterladen von Dateien

In diesem Artikelbeispiel wird der spezifische Co...

Eine kurze Diskussion über den JavaScript-Bereich

Inhaltsverzeichnis 1. Geltungsbereich 1. Globaler...

Verwenden Sie js, um ein einfaches Schlangenspiel zu schreiben

In diesem Artikel wird der spezifische Code eines...