Heim >Datenbank >MySQL-Tutorial >So stellen Sie eine Verbindung zur MySQL-Datenbank her und lesen Daten in C++
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>
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 )
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)
int mysql_real_query(MYSQL *mysql, const char *stmt_str, unsigned long length)
MySQL: ist das MySQL-Operationshandle, das über erhalten wird.
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)
MYSQL_ROW mysql_fetch_row(MYSQL_RES *result)3. Ein ProgrammierbeispielDie 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; }
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!