CREATE TABLE book( id_book SMALLINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(255), author VARCHAR(255), isbn VARCHAR(255)) Engine=InnoDB;
Tässä esimerkissä esitetään, kuinka book-taulun data saadaan haettua Qt-sovellukseen.
Jotta esimerkki toimii, on ensin kirjauduttava sovellukseen ja tähän tarvitaan login-systeemi, jossa käytetään http-post metodia.
QT +=network
#include <QtNetwork> #include <QNetworkAccessManager> #include <QJsonDocument>
QNetworkAccessManager *getManager; QNetworkReply *reply; QByteArray response_data;
private slots: void getBookSlot (QNetworkReply *reply);
QString site_url="http://localhost:3000/book"; QNetworkRequest request((site_url)); //WEBTOKEN ALKU QByteArray myToken="Bearer "+webToken; request.setRawHeader(QByteArray("Authorization"),(myToken)); //WEBTOKEN LOPPU getManager = new QNetworkAccessManager(this); connect(getManager, SIGNAL(finished (QNetworkReply*)), this, SLOT(getBookSlot(QNetworkReply*))); reply = getManager->get(request);
void MainWindow::getBookSlot (QNetworkReply *reply) { response_data=reply->readAll(); qDebug()<<"DATA : "+response_data; QJsonDocument json_doc = QJsonDocument::fromJson(response_data); QJsonArray json_array = json_doc.array(); QString book; foreach (const QJsonValue &value, json_array) { QJsonObject json_obj = value.toObject(); book+=QString::number(json_obj["id_book"].toInt())+", "+json_obj["name"].toString()+", "+json_obj["author"].toString()+"\r"; } ui->textBooks->setText(book); reply->deleteLater(); getManager->deleteLater(); }
Harjoituksessa kirjat näytetään TextEdit oliossa. Voisit myös tutkia harjoituksen Table View avulla, kuinka saisit näytettyä kirjat QtableView:ssä.