Heim > Datenbank > MySQL-Tutorial > So stellen Sie eine Verbindung zur MySQL-Datenbank her und lesen Daten in C++

So stellen Sie eine Verbindung zur MySQL-Datenbank her und lesen Daten in C++

WBOY
Freigeben: 2023-06-03 09:05:36
nach vorne
4128 Leute haben es durchsucht

    1. Die Header-Datei der MySQL-API muss enthalten sein

    Wenn Sie eine Verbindung zur lokalen MySQL-Datenbank herstellen müssen, muss die MySQL-Datenbank lokal installiert sein. Hier werden einige MySQL-APIs verwendet, z. B. das Herstellen einer Verbindung zur Datenbank, das Ausführen von Abfrageanweisungen und andere Vorgänge. Diese Schnittstellen sind in den folgenden Headerdateien enthalten:

    #include <mysql/mysql.h>
    Nach dem Login kopieren

    2 Spezifische Schritte zum Herstellen einer Verbindung zu MySQL

    Dies kann grob unterteilt werden Vier Hauptschritte:

    1. Stellen Sie eine Verbindung zur MySQL-Datenbank her

    Wenn Sie die Daten in MySQL-Daten abrufen möchten, müssen Sie natürlich zuerst eine Verbindung zur Datenbank herstellen und ein Handle erhalten, das das bedienen kann Datenbank.

    2. Führen Sie die Abfrageanweisung aus, dh wählen Sie die von uns benötigten Daten aus.

    dient dazu, die Abfrageanweisung auszuführen und die von uns benötigten Daten abzufragen. Die abgefragten Daten werden an einem Ort gespeichert, der als Ergebnismenge bezeichnet wird.

    3. Rufen Sie die erforderlichen Daten aus dem Ergebnissatz ab.

    Verwenden Sie die entsprechenden Schnittstellenfunktionen, um die Daten jeder Zeile und jedes Felds im Ergebnissatz abzurufen.

    4. Extrahieren Sie die Informationen jedes Felds in jeder Zeile aus dem Ergebnissatz. 5. Geben Sie Ressourcen frei, einschließlich des MySQL-Handles des Ergebnissatzes. Im Folgenden finden Sie eine detaillierte Erläuterung mehrerer wichtiger Schnittstellenfunktionen, die verwendet werden müssen.

    2.1 mysql_real_connect

    Diese Funktion wird verwendet, um eine Verbindung zur Datenbank-Engine herzustellen, die auf dem Host ausgeführt wird. Wenn die Verbindung erfolgreich ist, wird ein Handle abgerufen, mit dem die Datenbank betrieben werden kann. Andernfalls wird ein NULL-Zeiger zurückgegeben.

    MYSQL *mysql_real_connect(MYSQL *mysql, 
    						const char *host, 
    						const char *user, 
    						const char *passwd, 
    						const char *db, 
    						unsigned int port, 
    						const char *unix_socket, 
    						unsigned long client_flag
    						)
    Nach dem Login kopieren

    Diese Funktion hat viele Parameter und die Bedeutung jedes Parameters ist wie folgt:

    mysql

    : Es ist die Adresse der vorhandenen MYSQL-Struktur. Vor dem Aufruf von mysql_real_connect() muss mysql_init() aufgerufen werden, um die MYSQL-Struktur zu initialisieren.

    • host: ist der Hostname oder die IP-Adresse. Wenn „host“ NULL oder die Zeichenfolge „localhost“ ist, wird die Verbindung als Verbindung zu localhost behandelt.

    • Benutzer: Die MySQL-Anmelde-ID des Benutzers. Wenn „user“ NULL oder die leere Zeichenfolge „“ ist, wird der Benutzer als aktueller Benutzer betrachtet.

    • passwd: Passwort des Benutzers. Wenn „passwd“ NULL ist, werden nur Einträge in der Benutzertabelle des Benutzers (die ein leeres Passwortfeld haben) auf eine Übereinstimmung überprüft.

    • db: ist der Datenbankname. Wenn db NULL ist, setzt die Verbindung die Standarddatenbank auf diesen Wert.

    • Port: Wenn „Port“ nicht 0 ist, wird sein Wert als Portnummer für die TCP/IP-Verbindung verwendet. Beachten Sie, dass der Parameter „host“ die Art der Verbindung bestimmt.

    • unix_socket: Wenn unix_socket nicht NULL ist, beschreibt diese Zeichenfolge den Socket oder die Named Pipe, die verwendet werden soll. Beachten Sie, dass der Parameter „host“ die Art der Verbindung bestimmt.

    • client_flag: Der Wert ist normalerweise 0

    • 2.2 mysql_query oder mysql_real_queryDiese Funktion wird verwendet, um einen Abfragebefehl an die Datenbank zu senden und ihn von der Datenbank ausführen zu lassen. Die Rückgabe von 0 zeigt an, dass die Abfrage erfolgreich war, andernfalls schlägt sie fehl.

      int mysql_query(MYSQL *mysql, const char *stmt_str)
      Nach dem Login kopieren
    • oder:
    int
    mysql_real_query(MYSQL *mysql,
                     const char *stmt_str,
                     unsigned long length)
    Nach dem Login kopieren

    MySQL: ist das MySQL-Operationshandle, das über erhalten wird.

      stmt_str: Gibt die Abfrageanweisung an, die ausgeführt werden muss.
    • Länge: ist die Länge der Abfrageanweisung.
    • Der Unterschied zwischen den beiden oben genannten Funktionen ist:
    • mysql_query () kann nicht zum Ausführen von Binäranweisungen verwendet werden, dh der Parameter stmt_str darf keine Binärdaten enthalten und wird in Zeichen analysiert.

      mysql_query ist etwas langsamer, da die Länge der Abfrageanweisung berechnet werden muss
    • 2.3 Holen Sie sich die Ergebnismenge mysql_store_result
    • Diese Funktion gibt die Ergebnismenge zurück, wenn die Abfrage erfolgreich ist. Wenn sie fehlschlägt, gibt sie NULL zurück

      MYSQL_RES *mysql_store_result(MYSQL *mysql)
      Nach dem Login kopieren
    • 2.4 Zeigt den Ergebnissatz jeder Datenzeile an

    Der Eingabeparameter dieser Funktion ist der in Schritt (3) zurückgegebene Ergebnissatz. Bei jedem Aufruf wird die nächste Datenzeile in der Ergebnismenge zurückgegeben und der Zeiger um eine Zeile nach hinten verschoben. Wenn keine nächste Datenzeile vorhanden ist, wird NULL zurückgegeben.

    Sie können mysql_num_fields(result) verwenden, um die Anzahl der Zeilen in der Ergebnismenge zu berechnen, und mysql_num_fields(result), um die Anzahl der Spalten zu berechnen. Wenn Zeile die Informationen einer bestimmten Zeile sind, dann Zeile[0], Zeile[1]. . . Alle Feldinformationen der Zeile.

    MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)
    Nach dem Login kopieren

    3. Ein Programmierbeispiel

    Die Umgebung hier ist ein Linux-System. Der Name der verwendeten lokalen Datenbank lautet „CrashCourse“ und der Name der Abfragetabelle lautet „products“. Das folgende Programmierbeispiel zeigt die Abfrage aller Artikel mit einem Preis über 30 in der Produkttabelle. Der vollständige Inhalt der Produkttabelle lautet wie folgt:


    #include 
    #include <mysql/mysql.h>
    #include 
    using namespace std;
     
    MYSQL mysql;  //mysql连接
    MYSQL_RES* res; //结果集结构体   
    MYSQL_ROW row; //char** 二维数组,存放记录  
     
    int main()
    {	
    	// 步骤1: 初始化并连接数据库,获得操作数据库的句柄
    	mysql_init(&mysql);    //初始化
    	if (!(mysql_real_connect(&mysql, "localhost", "root", "root", "CrashCourse", 0, NULL, 0))) {
    		cout << "Couldn't connect to Database!\n : " << mysql_error(&mysql);
    		exit(1);
    	}
    	else {
    		printf("Database connection succeeded. Connected...\n\n");
    	}
    	// 步骤2: 执行查询语句,查询需要的数据(设置编码格式也相当于执行特殊的查询语句)
    	mysql_query(&mysql, "set names gbk"); // 设置编码格式
    	mysql_query(&mysql, "SELECT * from products where prod_price > 30");
     
    	// 步骤3:获取结果集
    	res = mysql_store_result(&mysql);
    	// 步骤4:显示结果集中每行数据
        int cols = mysql_num_fields(res); // 计算结果集中,列的个数
    	while (row = mysql_fetch_row(res)) {
        
        	for (int i = 0; i < cols; ++i) {
          		cout << row[i] << "\t";
        	}
        	cout << endl;
    	}
     	// 步骤5:释放结果集合mysql句柄
    	mysql_free_result(res);
    	mysql_close(&mysql);
     return 0;
     
    }
    Nach dem Login kopieren
    Die Abfrageergebnisse lauten wie folgt:

    So stellen Sie eine Verbindung zur MySQL-Datenbank her und lesen Daten in C++

    Das obige ist der detaillierte Inhalt vonSo stellen Sie eine Verbindung zur MySQL-Datenbank her und lesen Daten in C++. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

    Verwandte Etiketten:
    Quelle:yisu.com
    Erklärung dieser Website
    Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
    Beliebte Tutorials
    Mehr>
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage