gpt4 book ai didi

c++ - 如何在 Qt 中进行 MySQL 查询?

转载 作者:行者123 更新时间:2023-11-29 19:45:24 26 4
gpt4 key购买 nike

我正在尝试创建一个简单的应用程序,它允许用户输入单词,应用程序将输出定义。我通过制作mysql数据库文件来编译单词和定义。我认为使用 MySQL 是制作我的应用程序的更快方法。我的数据库如下所示:

rowed      |  Column1(word)           | Column2(definition)
1 DNA A double-stranded,helical...

这个程序的伪代码肯定应该是这样的:

if(lineEdit == wordInput)
{
ui->label->setText("Display definition)
}

我只是不知道该怎么做。到目前为止,我已经尝试过以下代码:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
#include <QPalette>

#define Path_to_DB "/Users/makkhay/Desktop/nep_eng-2.sqlite"


MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

{
ui->setupUi(this);
// Set background picture
QPixmap bkgnd("/Users/makkhay/Desktop/background.jpg");
bkgnd = bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio);
QPalette palette;
palette.setBrush(QPalette::Background, bkgnd);
this->setPalette(palette);


myDB = QSqlDatabase::addDatabase("QSQLITE");
myDB.setDatabaseName(Path_to_DB);
QFileInfo checkFile(Path_to_DB);

if(checkFile.isFile())
{
if(myDB.open())
{
ui->label->setText("The database is connected");
}

}else{
ui->label->setText("No file found!");
}


}

MainWindow::~MainWindow()
{
delete ui;
myDB.close();
}


void MainWindow::on_pushButton_clicked()
{
// QMessageBox::StandardButton reply= QMessageBox::question(this,
// "My Title", " Word not found, quit app?",
// QMessageBox::Yes | QMessageBox::No);


// if(reply == QMessageBox::Yes){

// QApplication::quit();
//}


if(!myDB.isOpen()){
qDebug() << " No connection to db";
return;
}

QString wordInput, definition;
wordInput = ui->lineEdit->text();

QSqlQuery qry;

qry.prepare("SELECT Column1,Column2 FROM Nepali WHERE Column1 = :input");
qry.bindValue(":input",wordInput);
// int fieldNo = query.record().indexof("Column1");

if(qry.exec())
{
ui->debug->setText(" Checking output!"); // output is visible

while (qry.next())
{
ui->output->setText("Checing output!"); // output is not visible


QString inputWord = qry.value(0).toString();
QString wordDefinition = qry.value(1).toString();
ui->output->setText(wordDefinition);





}
}

}

最佳答案

好的,下面的代码对我有用。尝试注释掉您现有的代码并粘贴此代码。此代码基本上与您发布的代码完全相同,我只是注释掉了一些设置背景的代码并删除了一些多余的行。

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
#include <QPalette>
#include <QSqlQuery>
#include <QFileInfo>

#define Path_to_DB "/Users/makkhay/Desktop/nep_eng-2.sqlite"


MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)

{
ui->setupUi(this);
// Set background picture
//QPixmap bkgnd("/Users/makkhay/Desktop/background.jpg");
//bkgnd = bkgnd.scaled(this->size(), Qt::IgnoreAspectRatio);
//QPalette palette;
//palette.setBrush(QPalette::Background, bkgnd);
//this->setPalette(palette);


myDB = QSqlDatabase::addDatabase("QSQLITE");
myDB.setDatabaseName(Path_to_DB);
QFileInfo checkFile(Path_to_DB);

if(checkFile.isFile())
{
if(myDB.open())
{
ui->label->setText("The database is connected");
}

}else{
ui->label->setText("No file found!");
}


}

MainWindow::~MainWindow()
{
delete ui;
myDB.close();
}


void MainWindow::on_pushButton_clicked()
{
if(!myDB.isOpen()){
qDebug() << " No connection to db";
return;
}

QString wordInput;
wordInput = ui->lineEdit->text();

QSqlQuery qry;

qry.prepare("SELECT Column1,Column2 FROM Nepali WHERE Column1 = :input");
qry.bindValue(":input",wordInput);

if(qry.exec())
{
ui->debug->setText(" Checking output!");

while (qry.next())
{
// Retrieve Values from select statement
QString inputWord = qry.value(0).toString();
QString wordDefinition = qry.value(1).toString();

// Display values
ui->output->setText(wordDefinition);
}
} else {
qDebug() << "query failed to execute";
}

}

关于c++ - 如何在 Qt 中进行 MySQL 查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41034262/

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