以下是一个C++ QT操作MySQL数据库的工具类示例代码,包括连接数据库、创建表、插入数据、删除数据、修改数据、查询数据、查询表字段名称等操作:
#include
#include
#include
#include
class MysqlTool
{
public:
MysqlTool(const QString& host, int port, const QString& dbname, const QString& user, const QString& password)
{
// 连接MySQL数据库
db_ = QSqlDatabase::addDatabase(“QMYSQL”);
db_.setHostName(host);
db_.setPort(port);
db_.setDatabaseName(dbname);
db_.setUserName(user);
db_.setPassword(password);
if (!db_.open()) {
qDebug() }
}
~MysqlTool()
{
// 关闭数据库连接
db_.close();
}
bool createTable(const QString& tableName, const QStringList& fields)
{
QString sql = QString(“CREATE TABLE IF NOT EXISTS %1 (%2)”).arg(tableName).arg(fields.join(“, “));
QSqlQuery query;
if (!query.exec(sql)) {
qDebug() return false;
}
return true;
}
bool insertData(const QString& tableName, const QStringList& fields, const QVariantList& values)
{
QString sql = QString(“INSERT INTO %1 (%2) VALUES (%3)”).arg(tableName).arg(fields.join(“, “)).arg(values.join(“, “));
QSqlQuery query;
if (!query.exec(sql)) {
qDebug() return false;
}
return true;
}
bool deleteData(const QString& tableName, const QString& condition)
{
QString sql = QString(“DELETE FROM %1 WHERE %2”).arg(tableName).arg(condition);
QSqlQuery query;
if (!query.exec(sql)) {
qDebug() return false;
}
return true;
}
bool updateData(const QString& tableName, const QString& setClause, const QString& condition)
{
QString sql = QString(“UPDATE %1 SET %2 WHERE %3”).arg(tableName).arg(setClause).arg(condition);
QSqlQuery query;
if (!query.exec(sql)) {
qDebug() return false;
}
return true;
}
bool selectData(const QString& tableName, const QStringList& fields, const QString& condition, QList& result)
{
QString sql = QString(“SELECT %1 FROM %2 WHERE %3”).arg(fields.join(“, “)).arg(tableName).arg(condition);
QSqlQuery query;
if (!query.exec(sql)) {
qDebug() return false;
}
while (query.next()) {
QVariantList record;
for (int i = 0; i
record.append(query.value(i));
}
result.append(record);
}
return true;
}
QStringList getFields(const QString& tableName)
{
QStringList result;
QSqlRecord record = db_.record(tableName);
for (int i = 0; i
result.append(record.fieldName(i));
}
return result;
}
private:
QSqlDatabase db_;
};
使用示例:
int main()
{
MysqlTool mysql(“localhost”, 3306, “testdb”, “root”, “password”);
// 创建表
QStringList fields = {“id INT PRIMARY KEY”, “name VARCHAR(50)”, “age INT”};
mysql.createTable(“students”, fields);
// 插入数据
QStringList insertFields = {“id”, “name”, “age”};
QVariantList insertValues = {1, “张三”, 20};
mysql.insertData(“students”, insertFields, insertValues);
// 查询数据
QStringList selectFields = {“id”, “name”, “age”};
QList selectResult;
mysql.selectData(“students”, selectFields, “age > 18”, selectResult);
for (const auto& record : selectResult) {
int id = record[0].toInt();
QString name = record[1].toString();
int age = record[2].toInt();
qDebug() }
// 更新数据
QString setClause = “age = 25”;
QString condition = “id = 1”;
mysql.updateData(“students”, setClause, condition);
// 删除数据
QString deleteCondition = “age mysql.deleteData(“students”, deleteCondition);
// 查询表字段名称
QStringList fields = mysql.getFields(“students”);
qDebug()
return 0;
}
以上代码仅供参考,实际使用时需要根据实际情况进行修改。
需要注意的是,使用QT操作MySQL数据库需要在项目文件中添加以下依赖项:
QT += sql
同时,也需要确保安装了MySQL数据库驱动程序,可以使用以下命令安装:
sudo apt-get install libqt5sql5-mysql
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
对于一些小型 Web 应用程序而言,强制使用服务器渲染(Server side render)可能会成为一种障碍。这时,预渲染可能是一个非常好的替代选择。 Prerender 的一种解决方案是使用 Preact 及其自己的 CLI. 它允许您编译所有预先选择的…