Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Menggunakan pangkalan data MySQL dalam C++ dan kemahiran aplikasinya

Menggunakan pangkalan data MySQL dalam C++ dan kemahiran aplikasinya

王林
王林asal
2023-08-22 17:18:301744semak imbas

Menggunakan pangkalan data MySQL dalam C++ dan kemahiran aplikasinya

MySQL ialah sistem pengurusan pangkalan data sumber terbuka yang popular yang boleh digunakan untuk menyimpan dan mengurus pelbagai jenis data. Artikel ini akan memperkenalkan cara menggunakan pangkalan data MySQL dalam C++ dan beberapa kemahiran aplikasi.

Pasang MySQL C++ Connector

Mula-mula anda perlu memasang MySQL C++ Connector. Anda boleh memuat turun MySQL C++ Connector yang sepadan dengan versi sistem pengendalian daripada tapak web rasmi MySQL (http://dev.mysql.com/downloads/connector/cpp/). Selepas pemasangan pada Windows, tambahkan folder include dan lib di bawah laluan pemasangan kepada direktori include tambahan dan direktori perpustakaan tambahan bagi projek Visual Studio.

Menyambung ke pangkalan data MySQL

Untuk menyambung ke pangkalan data MySQL, anda perlu mengetahui parameter berikut:

  • Nama hos: Nama hos di mana pelayan MySQL berada.
  • Nama Pengguna dan Kata Laluan: Nama pengguna dan kata laluan yang digunakan semasa menyambung ke pangkalan data.
  • Nama pangkalan data: Nama pangkalan data untuk disambungkan.

Gunakan kod berikut untuk menyambung ke pangkalan data MySQL:

#include <iostream>
#include <mysql_connection.h>
#include <mysql_driver.h>
#include <cppconn/exception.h>
#include <cppconn/resultset.h>
#include <cppconn/statement.h>

using namespace std;

int main() {
    sql::Driver* driver;
    sql::Connection* con;
    sql::Statement* stmt;
    sql::ResultSet* res;

    driver = get_driver_instance();
    con = driver->connect("tcp://localhost:3306", "username", "password");
    stmt = con->createStatement();
    stmt->execute("USE database_name");

    // 这里可以执行需要的操作

    delete res;
    delete stmt;
    delete con;
    return 0;
}

Di mana, "tcp://localhost:3306" mewakili port lalai untuk menyambung ke pelayan MySQL tempatan, "nama pengguna" dan "kata laluan" ialah nama pengguna dan kata laluan yang digunakan semasa menyambung ke pangkalan data , "database_name" ialah nama pangkalan data untuk disambungkan.

Melaksanakan pertanyaan SQL asas

Selepas menyambung ke pangkalan data MySQL, kami boleh menggunakan pertanyaan SQL untuk membaca dan menulis data. Berikut ialah beberapa contoh pertanyaan SQL asas:

Query

res = stmt->executeQuery("SELECT * FROM table_name");
while (res->next()) {
    cout << res->getString("column_name") << endl;
}

Insert

stmt->execute("INSERT INTO table_name (column1, column2) VALUES ('value1', 'value2')");

Kemas kini

stmt->execute("UPDATE table_name SET column1='new_value' WHERE column2='value_to_update'");

Delete

stmt->execute("DELETE FROM table_name WHERE column='value_to_delete'");

Perhatikan bahawa sebelum memadam atau mengemas kini data, anda harus terlebih dahulu membuat pertanyaan menggunakan pernyataan SELECT untuk memadam. atau kemas kini wujud.

Memproses keputusan pertanyaan

Selepas menggunakan executeQuery untuk melaksanakan pertanyaan SELECT, anda boleh menggunakan objek ResultSet untuk mendapatkan set hasil. Kelas ResultSet menyediakan pelbagai kaedah untuk mendapatkan jenis data yang berbeza, bergantung pada jenis data lajur yang anda ingin dapatkan. Berikut adalah beberapa contoh:

res = stmt->executeQuery("SELECT * FROM table_name");

//获取int类型数据
int c1 = res->getInt("column1");

//获取string类型数据
string c2 = res->getString("column2");

//获取double类型的数据
double c3 = res->getDouble("column3");

Anda boleh menggunakan gelung sementara untuk membaca semua data dalam set hasil:

while (res->next()) {
    int c1 = res->getInt("column1");
    string c2 = res->getString("column2");
    double c3 = res->getDouble("column3");
    //做一些任务
}

Mengendalikan ralat MySQL

Apabila menggunakan MySQL dalam C++, ralat biasanya boleh dikendalikan oleh:

try {
    //需要执行的语句
} catch (sql::SQLException& e) {
    //发生错误时的处理
    cout << "MySQL Error: " << e.what() << endl;
}

Dalam cuba blok Laksanakan pernyataan yang boleh membuang SQLException dalam blok tangkapan, dan kemudian kendalikan ralat dalam blok tangkapan. Mesej ralat boleh diperoleh menggunakan e.what() dalam blok tangkapan.

Menggunakan Transaksi

Pangkalan data MySQL menyokong transaksi, yang boleh melaksanakan satu set operasi sebagai satu unit logik. Jika mana-mana operasi ini gagal, semua operasi akan dikembalikan ke keadaan sebelum transaksi dimulakan. Cara menggunakan transaksi seperti berikut:

sql::Savepoint* savepoint = con->setSavepoint();
try {
    stmt->execute("UPDATE table_name SET column1='new_value' WHERE column2='value_to_update'");
    stmt->execute("INSERT INTO table_name (column1, column2) VALUES ('value', 'value')");
    con->commit();
} catch (sql::SQLException& e) {
    con->rollback(savepoint);
}

Sebelum melaksanakan penyata yang perlu dikendalikan sebagai transaksi, mula-mula tetapkan titik simpan (savepoint) pada objek sambungan (con). Selepas semua pernyataan berjaya dilaksanakan, gunakan kaedah commit() bagi objek sambungan untuk melakukan transaksi. Jika mana-mana pernyataan gagal dilaksanakan, gunakan kaedah rollback(savepoint) objek sambungan untuk melancarkan semula dan membuat asal semua perubahan.

Kesimpulan

Menggunakan pangkalan data MySQL dalam C++ bukan sahaja membolehkan anda menyimpan dan mendapatkan data, tetapi anda juga boleh menggunakan transaksi dan pengendalian ralat untuk memastikan integriti dan ketepatan data. Artikel ini menerangkan cara menyambung ke pangkalan data MySQL, melaksanakan pertanyaan SQL asas, memproses hasil pertanyaan, mengendalikan ralat MySQL dan menggunakan transaksi. Harap petua ini berguna kepada pembangun C++ yang bekerja dengan pangkalan data MySQL.

Atas ialah kandungan terperinci Menggunakan pangkalan data MySQL dalam C++ dan kemahiran aplikasinya. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn