操作环境是 macOS, Qt 5.8
在代码外,我建好了 myData.db 数据库文件,已经进行了建表。我想把在ui
界面的输入框里面获得到的数据插入到数据库里面,但是运行后点击相关的插入按钮却插入不成功。
我是连上了数据库的,但是不能把获取到的数据插入到数据库,也没有报错什么的,不知道是否是我的数据库环境配置问题还是代码上忘了什么。请大家帮我看看,十分感谢。
这个是主页面的 cpp文件
#include "MainWindow.h"
#include "ui_MainWindow.h"
#include "NextWindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
//创建出新窗口
nextWin = new NextWindow;
connect(ui->switchLabel, &MyLabel::clicked, [=](){
this->hide();
nextWin->show();
});
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_signUp_clicked()
{
//连接到数据库
// myData = QSqlDatabase::addDatabase("QSQLITE");
QSqlDatabase myData;
if(QSqlDatabase::contains("qt_sql_default_connection")) {
myData = QSqlDatabase::database("qt_sql_default_connection"); //判断一下
}
else {
myData = QSqlDatabase::addDatabase("QSQLITE");
}
myData.setHostName("localhost");
myData.setUserName("Root");
myData.setPassword("");
myData.setDatabaseName("myData.db");
if(myData.open()) {
qDebug() <<"数据库连接成功"<<endl;
//取出创建的用户名,密码和手机号
QString signName = ui->signNameBtn->text();
QString signPassword = ui->signPassBtn->text();
QString signPhone = ui->signPhoneBtn->text();
//插入到数据库里面
QSqlQuery sql;
sql.prepare("INSERT INTO users (userName, password, email)"
"VALUES (:uerName, :password, :email)");
sql.bindValue(":userName", signName); //之前取出来的 Qstring的signName
sql.bindValue(":password", signPassword);
sql.bindValue(":email", signPhone); //数据库里面的第三个写的是邮箱,不好改,下次得注意
//提示数据插入成功没有
if(sql.exec()) {
QMessageBox::information(this, "Successful", "Insert data successful");
}else {
QMessageBox::information(this, "Not Inserted", "Data is not inserted ");
}
}else {
QMessageBox::information(this, "Not connected", "database is not conntected");
}
}
头文件
#include <QString>
#include<QSqlQuery>
#include <QDebug>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
//下个页面的指针
NextWindow* nextWin;
private slots:
void on_logInBtn_clicked(); //登录按钮
void on_signUp_clicked(); //注册按钮
private:
Ui::MainWindow *ui;
QSqlDatabase myData;
};
#endif // MAINWINDOW_H
我把错误打印出来了,QSqlError("", "Parameter count mismatch", "")
说是参数错误,我输出了一下从输入框获取的值,是成功的。所以应该是插入那一段代码有问题吧。但是我仔细看了一下我的数据文件,都是匹配的啊。。