Cập nhật dữ liệu trong MySQL bằng C++

Hướng dẫn cách cập nhật dữ liệu trong MySQL bằng C++ sử dụng Prepared Statements để đảm bảo an toàn và hiệu suất khi tương tác với cơ sở dữ liệu. Bài viết cung cấp một ví dụ minh họa dễ hiểu.

Trong bài viết này, chúng ta sẽ tìm hiểu cách cập nhật dữ liệu trong MySQL sử dụng ngôn ngữ lập trình C++. Bằng cách dùng Prepared Statements, chúng ta có thể bảo vệ dữ liệu khỏi các cuộc tấn công SQL Injection và cải thiện hiệu suất khi xử lý nhiều bản ghi.

Mã C++

#include <mysql/mysql.h>
#include <iostream>

int main() {
    // Khởi tạo MySQL
    MYSQL* conn = mysql_init(NULL);

    // Kết nối tới database
    if (conn == NULL) {
        std::cerr << "Không thể khởi tạo kết nối MySQL\n";
        return EXIT_FAILURE;
    }

    if (mysql_real_connect(conn, "localhost", "username", "password", "database_name", 0, NULL, 0) == NULL) {
        std::cerr << "Lỗi kết nối MySQL: " << mysql_error(conn) << "\n";
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    // Chuẩn bị câu lệnh UPDATE
    const char* query = "UPDATE students SET name = ? WHERE id = ?";
    MYSQL_STMT* stmt = mysql_stmt_init(conn);

    if (!stmt) {
        std::cerr << "Không thể khởi tạo Prepared Statement\n";
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    if (mysql_stmt_prepare(stmt, query, strlen(query))) {
        std::cerr << "Lỗi khi chuẩn bị câu lệnh: " << mysql_stmt_error(stmt) << "\n";
        mysql_stmt_close(stmt);
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    // Thiết lập tham số
    MYSQL_BIND bind[2];
    memset(bind, 0, sizeof(bind));

    std::string name = "Nguyen Van A";
    int id = 1;

    bind[0].buffer_type = MYSQL_TYPE_STRING;
    bind[0].buffer = (char*)name.c_str();
    bind[0].buffer_length = name.length();

    bind[1].buffer_type = MYSQL_TYPE_LONG;
    bind[1].buffer = (char*)&id;
    bind[1].is_null = 0;

    if (mysql_stmt_bind_param(stmt, bind)) {
        std::cerr << "Lỗi khi liên kết tham số: " << mysql_stmt_error(stmt) << "\n";
        mysql_stmt_close(stmt);
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    // Thực thi câu lệnh
    if (mysql_stmt_execute(stmt)) {
        std::cerr << "Lỗi khi thực thi câu lệnh: " << mysql_stmt_error(stmt) << "\n";
        mysql_stmt_close(stmt);
        mysql_close(conn);
        return EXIT_FAILURE;
    }

    std::cout << "Cập nhật dữ liệu thành công!\n";

    // Đóng kết nối
    mysql_stmt_close(stmt);
    mysql_close(conn);

    return EXIT_SUCCESS;
}

Giải thích chi tiết từng dòng code

  • mysql_init: Khởi tạo một đối tượng MySQL.
  • mysql_real_connect: Kết nối tới cơ sở dữ liệu MySQL.
  • mysql_stmt_init: Tạo đối tượng Prepared Statement.
  • mysql_stmt_prepare: Chuẩn bị câu lệnh SQL với tham số chưa biết.
  • mysql_stmt_bind_param: Liên kết các tham số với câu lệnh.
  • mysql_stmt_execute: Thực thi câu lệnh SQL.
  • mysql_stmt_closemysql_close: Đóng Prepared Statement và kết nối MySQL.

Yêu cầu hệ thống:

  • C++ Compiler (g++ hoặc Visual Studio)
  • MySQL Connector/C++ (MySQL C API)
  • MySQL server

Cách cài đặt các thư viện để chạy được đoạn mã C++ trên:

  1. Cài đặt MySQL Connector/C++.
  2. Bao gồm tệp thư viện mysql.h và liên kết với libmysqlclient khi biên dịch.

Lời khuyên:

  • Đảm bảo rằng bạn đã cấu hình đúng tên người dùng, mật khẩu, và cơ sở dữ liệu.
  • Sử dụng Prepared Statements để tránh các cuộc tấn công SQL Injection và cải thiện hiệu suất.
Tags: MySQL, C++


Các Hướng Dẫn Cùng Chủ Đề Đang Xem

Sử dụng Selenium trong C++ để gửi đoạn mã JavaScript vào website trên Chrome

Hướng dẫn cách sử dụng Selenium trong C++ để gửi đoạn mã JavaScript vào một website thông qua trình duyệt Chrome. Bài viết sẽ hướng dẫn cách cài đặt và viết mã để thực hiện điều này.
Ví dụ về Factory Pattern trong C++

Bài viết này sẽ trình bày về Factory Pattern trong C++, một mẫu thiết kế phổ biến giúp tạo ra các đối tượng mà không cần chỉ định rõ lớp cụ thể của đối tượng đó. Điều này giúp tăng tính linh hoạt và khả năng mở rộng cho mã nguồn.
Ví dụ về Strategy Pattern trong C++

Bài viết này giới thiệu về Strategy Pattern trong C++, giải thích cách hoạt động và cung cấp ví dụ minh họa cụ thể giúp bạn hiểu rõ hơn về thiết kế mẫu này trong lập trình hướng đối tượng.
Cách gửi POST dữ liệu tới API bằng C++ sử dụng thư viện libcurl

Hướng dẫn cách gửi dữ liệu đến API bằng phương thức POST trong C++ sử dụng thư viện libcurl. Bài viết sẽ giúp bạn hiểu cách cấu hình và gửi các yêu cầu HTTP POST đến một API RESTful.
Lấy nội dung từ database MySQL bằng C++

Hướng dẫn chi tiết cách lấy dữ liệu từ database MySQL bằng C++ sử dụng Prepared Statements. Bài viết giúp bạn hiểu cách kết nối, thực hiện truy vấn và xử lý kết quả với MySQL Connector/C++.
Đọc nội dung file Excel bằng C++

Hướng dẫn chi tiết cách đọc nội dung file Excel trong C++ bằng cách sử dụng thư viện `xlnt`. Bài viết này sẽ giúp bạn hiểu cách truy xuất dữ liệu từ file Excel và xử lý chúng trong chương trình C++ của bạn.
Chuyển đổi chữ cái Unicode có dấu thành không dấu trong C++

Hướng dẫn chi tiết cách chuyển đổi các chữ cái Unicode có dấu thành chữ không dấu trong C++ bằng cách sử dụng thư viện ``. Bài viết này sẽ giúp bạn xử lý các chuỗi văn bản tiếng Việt một cách hiệu quả hơn.
Tổng hợp tất cả các cách nối chuỗi trong C++

Bài viết này tổng hợp tất cả các cách nối chuỗi trong C++, giúp bạn hiểu rõ về các phương pháp khác nhau từ cơ bản đến nâng cao, bao gồm sử dụng toán tử `+`, hàm `append()`, và các phương thức từ thư viện `string`.
Chuyển chuỗi Markdown sang HTML bằng C++

Hướng dẫn chi tiết cách chuyển đổi chuỗi Markdown sang HTML bằng C++. Bài viết này sẽ giúp bạn nắm bắt cách sử dụng thư viện Markdown để thực hiện việc chuyển đổi một cách dễ dàng và hiệu quả.
Tạo mã Captcha bằng C++

Hướng dẫn cách tạo mã Captcha bằng ngôn ngữ lập trình C++ với việc sử dụng thư viện đồ họa để tạo hình ảnh và văn bản ngẫu nhiên, giúp bảo vệ các ứng dụng web hoặc phần mềm khỏi các cuộc tấn công tự động.

Đã thêm vào giỏ hàng