gpt4 book ai didi

c++ - 从 QT C++ 中的函数返回 SQL 数据

转载 作者:行者123 更新时间:2023-11-28 06:26:58 25 4
gpt4 key购买 nike

我是 C++ (QT) 的初学者,通常我曾经使用 PHP/MYSQL 进行 Web 工作,使用 Python 进行服务器任务等...,我想学习 C++,并且我有一个项目需要守护进程的工作,以及一些相互交谈的客户端,我想用 C++ 创建它。

我正在寻找一些处理 SQL 返回数据的示例,我正在创建类似 get_user() 的函数; get_users();等等...,我应该对此做些什么,在 PHP 中,我只需要将它们放在一个数组中,瞧,返回。

在 QT C++ 中执行此操作的最佳实践是什么?在网络上的许多示例中,它们都在 main 函数中完成,所以这对我没有太大帮助,我的数据库事务将在单独的头文件/源文件(类)中。

一些示例我的代码现在如何:

main.cpp

#include <QCoreApplication>
#include <QDebug>
#include <QSqlDatabase>
#include "database_mysql.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

database_mysql db;

// should have here an object or an array so that i could work with it...

db.test_query();

return a.exec();
}

database_mysql.h

#ifndef DATABASE_MYSQL_H
#define DATABASE_MYSQL_H
#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlQuery>
#include <QtDebug>

class database_mysql
{

QSqlDatabase m_database;



public:
database_mysql();
~database_mysql();

bool connect();
void disconnect();
//This should not be a bool...
bool test_query();

};

#endif // DATABASE_MYSQL_H

database_mysql.cpp

#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlQuery>
#include <QtDebug>
#include "database_mysql.h"


// Constructer
database_mysql::database_mysql()
{

}


// Desctructer
database_mysql::~database_mysql()
{
disconnect();
}


bool database_mysql::connect()
{
bool result = false;
// Connect the database, for the moment still static defined
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("anna");
db.setUserName("anna");
db.setPassword("anna");
if(!db.open()){
qDebug() << "Not Connectd";
}else{
qDebug() << "Database Connected";
result = true;
}
return result;
}


void database_mysql::disconnect()
{
if (m_database.open())
{
m_database.close();
}
}


bool database_mysql::test_query()
{
bool result = false;
if(!connect()){
qDebug() << "Database Not Connected!";
}else{
QSqlQuery query;
query.exec("SELECT * FROM sys_user");
while (query.next()){
QString name = query.value(1).toString();
qDebug() << "Name: " << name;
}
result = true;
}
return result;
}

我真的在网上搜索过这个,很难找到一些此类信息,如果您有此类信息,将不胜感激。

非常感谢,

最佳答案

正如 Martin 所写,您可以只使用数组或列表。这是 QList 的示例。我选择将列表作为引用参数移交,因此您仍然可以将 bool 作为返回值作为成功指标。

main.cpp

#include <QCoreApplication>
#include <QDebug>
#include <QSqlDatabase>
#include <QList>
#include "database_mysql.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

database_mysql db;

QList<QString> names;

db.test_query(names);

for_each(QString name, names){
qDebug()<< "Name: " << name;
}

return a.exec();
}

database_mysql.h

#ifndef DATABASE_MYSQL_H
#define DATABASE_MYSQL_H
#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlQuery>
#include <QtDebug>

class database_mysql
{

QSqlDatabase m_database;



public:
database_mysql();
~database_mysql();

bool connect();
void disconnect();
//This should not be a bool...
bool test_query(QList<QString>& namesList);

};

#endif // DATABASE_MYSQL_H

database_mysql.cpp

#include <QtSql/QSql>
#include <QtSql/QSqlDatabase>
#include <QtSql/QSqlDriver>
#include <QtSql/QSqlQuery>
#include <QtDebug>
#include "database_mysql.h"


// Constructer
database_mysql::database_mysql()
{

}


// Desctructer
database_mysql::~database_mysql()
{
disconnect();
}


bool database_mysql::connect()
{
bool result = false;
// Connect the database, for the moment still static defined
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("anna");
db.setUserName("anna");
db.setPassword("anna");
if(!db.open()){
qDebug() << "Not Connectd";
}else{
qDebug() << "Database Connected";
result = true;
}
return result;
}


void database_mysql::disconnect()
{
if (m_database.open())
{
m_database.close();
}
}


bool database_mysql::test_query(QList<QString>& namesList)
{
bool result = false;
namesList.clear();//clear possible old entries

if(!connect()){
qDebug() << "Database Not Connected!";
}else{
QSqlQuery query;
query.exec("SELECT * FROM sys_user");
while (query.next()){
QString name = query.value(1).toString();
namesList.append(name);
}
result = true;
}
return result;
}

关于c++ - 从 QT C++ 中的函数返回 SQL 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28363277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com