Esercizi Eliminazione MySQL C++
Codegrind Team•Jul 12 2024
Ecco degli esercizi semplici con soluzione per praticare l’eliminazione singola e multipla di record in MySQL utilizzando C++ sia in modo sequenziale che OOP.
Esercizio 1: Eliminazione singola di un record usando MySQL Connector/C++ (metodo sequenziale)
Stabilire una connessione a MySQL ed eliminare un singolo record.
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
#include <iostream>
int main() {
sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();
std::unique_ptr<sql::Connection> con(driver->connect("tcp://127.0.0.1:3306", "root", "password"));
con->setSchema("test_db");
std::unique_ptr<sql::PreparedStatement> pstmt(con->prepareStatement("DELETE FROM test_table WHERE id = ?"));
pstmt->setInt(1, 1);
int rows = pstmt->executeUpdate();
std::cout << "Eliminati " << rows << " record." << std::endl;
return 0;
}
Esercizio 2: Eliminazione multipla di record usando MySQL Connector/C++ (metodo sequenziale)
Stabilire una connessione a MySQL ed eliminare più record.
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
#include <iostream>
int main() {
sql::mysql::MySQL_Driver* driver = sql::mysql::get_mysql_driver_instance();
std::unique_ptr<sql::Connection> con(driver->connect("tcp://127.0.0.1:3306", "root", "password"));
con->setSchema("test_db");
std::unique_ptr<sql::PreparedStatement> pstmt(con->prepareStatement("DELETE FROM test_table WHERE status = ?"));
pstmt->setString(1, "inactive");
int rows = pstmt->executeUpdate();
std::cout << "Eliminati " << rows << " record." << std::endl;
return 0;
}
Esercizio 3: Eliminazione singola di un record usando MySQL Connector/C++ (OOP)
Creare una classe per gestire la connessione a MySQL ed eliminare un singolo record.
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
#include <iostream>
class MySQLClient {
private:
sql::mysql::MySQL_Driver* driver;
std::unique_ptr<sql::Connection> con;
public:
MySQLClient(const std::string& host, const std::string& user, const std::string& pass, const std::string& db) {
driver = sql::mysql::get_mysql_driver_instance();
con.reset(driver->connect(host, user, pass));
con->setSchema(db);
}
void eliminaRecordSingolo(const std::string& table, int id) {
std::unique_ptr<sql::PreparedStatement> pstmt(con->prepareStatement("DELETE FROM " + table + " WHERE id = ?"));
pstmt->setInt(1, id);
int rows = pstmt->executeUpdate();
std::cout << "Eliminati " << rows << " record." << std::endl;
}
};
int main() {
MySQLClient client("tcp://127.0.0.1:3306", "root", "password", "test_db");
client.eliminaRecordSingolo("test_table", 1);
return 0;
}
Esercizio 4: Eliminazione multipla di record usando MySQL Connector/C++ (OOP)
Creare una classe per gestire la connessione a MySQL ed eliminare più record.
#include <mysql_driver.h>
#include <mysql_connection.h>
#include <cppconn/statement.h>
#include <cppconn/prepared_statement.h>
#include <iostream>
class MySQLClient {
private:
sql::mysql::MySQL_Driver* driver;
std::unique_ptr<sql::Connection> con;
public:
MySQLClient(const std::string& host, const std::string& user, const std::string& pass, const std::string& db) {
driver = sql::mysql::get_mysql_driver_instance();
con.reset(driver->connect(host, user, pass));
con->setSchema(db);
}
void eliminaRecordMultipli(const std::string& table, const std::string& status) {
std::unique_ptr<sql::PreparedStatement> pstmt(con->prepareStatement("DELETE FROM " + table + " WHERE status = ?"));
pstmt->setString(1, status);
int rows = pstmt->executeUpdate();
std::cout << "Eliminati " << rows << " record." << std::endl;
}
};
int main() {
MySQLClient client("tcp://127.0.0.1:3306", "root", "password", "test_db");
client.eliminaRecordMultipli("test_table", "inactive");
return 0;
}
Esercizio 5: Eliminazione singola di un record usando MySQL C API (metodo sequenziale)
Stabilire una connessione a MySQL ed eliminare un singolo record usando MySQL C API.
#include <mysql/mysql.h>
#include <iostream>
int main() {
MYSQL* conn = mysql_init(nullptr);
if (conn == nullptr) {
std::cerr << "mysql_init() failed\n";
return EXIT_FAILURE;
}
if (mysql_real_connect(conn, "localhost", "root", "password", "test_db", 0, nullptr, 0) == nullptr) {
std::cerr << "mysql_real_connect() failed\n";
mysql_close(conn);
return EXIT_FAILURE;
}
const char* query = "DELETE FROM test_table WHERE id = 1";
if (mysql_query(conn, query)) {
std::cerr << "DELETE failed. Error: " << mysql_error(conn) << std::endl;
} else {
std::cout << "Record eliminato con successo." << std::endl;
}
mysql_close(conn);
return EXIT_SUCCESS;
}
Esercizio 6: Eliminazione multipla di record usando MySQL C API (metodo sequenziale)
Stabilire una connessione a MySQL ed eliminare più record usando MySQL C API.
#include <mysql/mysql.h>
#include <iostream>
int main() {
MYSQL* conn = mysql_init(nullptr);
if (conn == nullptr) {
std::cerr << "mysql_init() failed\n";
return EXIT_FAILURE;
}
if (mysql_real_connect(conn, "localhost", "root", "password", "test_db", 0, nullptr, 0) == nullptr) {
std::cerr << "mysql_real_connect() failed\n";
mysql_close(conn);
return EXIT_FAILURE;
}
const char* query = "DELETE FROM test_table WHERE status = 'inactive'";
if (mysql_query(conn, query)) {
std::cerr << "DELETE failed. Error: " << mysql_error(conn) << std::endl;
} else {
std::cout << "Record eliminati con successo." << std::endl;
}
mysql_close(conn);
return EXIT_SUCCESS;
}
Esercizio 7: Eliminazione singola di un record usando MySQL C API (OOP)
Creare una classe per gestire la connessione a MySQL ed eliminare un singolo record usando MySQL C API.
#include <mysql/mysql.h>
#include <iostream>
#include <stdexcept>
class MySQLClient {
private:
MYSQL* conn;
public:
MySQLClient(const std::string&
host, const std::string& user, const std::string& pass, const std::string& db) {
conn = mysql_init(nullptr);
if (conn == nullptr) {
throw std::runtime_error("mysql_init() failed");
}
if (mysql_real_connect(conn, host.c_str(), user.c_str(), pass.c_str(), db.c_str(), 0, nullptr, 0) == nullptr) {
mysql_close(conn);
throw std::runtime_error("mysql_real_connect() failed");
}
}
~MySQLClient() {
mysql_close(conn);
}
void eliminaRecordSingolo(const std::string& table, int id) {
std::string query = "DELETE FROM " + table + " WHERE id = " + std::to_string(id);
if (mysql_query(conn, query.c_str())) {
throw std::runtime_error("DELETE failed: " + std::string(mysql_error(conn)));
} else {
std::cout << "Record eliminato con successo." << std::endl;
}
}
};
int main() {
try {
MySQLClient client("localhost", "root", "password", "test_db");
client.eliminaRecordSingolo("test_table", 1);
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
Esercizio 8: Eliminazione multipla di record usando MySQL C API (OOP)
Creare una classe per gestire la connessione a MySQL ed eliminare più record usando MySQL C API.
#include <mysql/mysql.h>
#include <iostream>
#include <stdexcept>
class MySQLClient {
private:
MYSQL* conn;
public:
MySQLClient(const std::string& host, const std::string& user, const std::string& pass, const std::string& db) {
conn = mysql_init(nullptr);
if (conn == nullptr) {
throw std::runtime_error("mysql_init() failed");
}
if (mysql_real_connect(conn, host.c_str(), user.c_str(), pass.c_str(), db.c_str(), 0, nullptr, 0) == nullptr) {
mysql_close(conn);
throw std::runtime_error("mysql_real_connect() failed");
}
}
~MySQLClient() {
mysql_close(conn);
}
void eliminaRecordMultipli(const std::string& table, const std::string& status) {
std::string query = "DELETE FROM " + table + " WHERE status = '" + status + "'";
if (mysql_query(conn, query.c_str())) {
throw std::runtime_error("DELETE failed: " + std::string(mysql_error(conn)));
} else {
std::cout << "Record eliminati con successo." << std::endl;
}
}
};
int main() {
try {
MySQLClient client("localhost", "root", "password", "test_db");
client.eliminaRecordMultipli("test_table", "inactive");
} catch (const std::exception& e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
Esercizio 9: Eliminazione singola di un record usando SOCI (metodo sequenziale)
Stabilire una connessione a MySQL ed eliminare un singolo record usando SOCI.
#include <soci/soci.h>
#include <soci/mysql/soci-mysql.h>
#include <iostream>
int main() {
try {
soci::session sql(soci::mysql, "db=test_db user=root password='password' host=localhost");
sql << "DELETE FROM test_table WHERE id = 1";
std::cout << "Record eliminato con successo." << std::endl;
} catch (const std::exception& e) {
std::cerr << "Errore: " << e.what() << std::endl;
}
return 0;
}
Esercizio 10: Eliminazione multipla di record usando SOCI (OOP)
Creare una classe per gestire la connessione a MySQL ed eliminare più record usando SOCI.
#include <soci/soci.h>
#include <soci/mysql/soci-mysql.h>
#include <iostream>
class MySQLClient {
private:
soci::session sql;
public:
MySQLClient(const std::string& connection_string) : sql(soci::mysql, connection_string) {}
void eliminaRecordMultipli(const std::string& table, const std::string& status) {
sql << "DELETE FROM " << table << " WHERE status = :status", soci::use(status);
std::cout << "Record eliminati con successo." << std::endl;
}
};
int main() {
try {
MySQLClient client("db=test_db user=root password='password' host=localhost");
client.eliminaRecordMultipli("test_table", "inactive");
} catch (const std::exception& e) {
std::cerr << "Errore: " << e.what() << std::endl;
}
return 0;
}