qt小练习之数据库的插入数据

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H
 
#include <QMainWindow>
#include <QtSql>
#include <QSqlTableModel>
#include <QSqlDatabase>
#include <QString>
#include <QSqlError>
#include <QMessageBox>
#include <QSqlRecord>
#include <iostream>
#include <QTableView>
#include <QAbstractItemModel>
namespace Ui {
class MainWindow;
}
 
class MainWindow : public QMainWindow
{
    Q_OBJECT
 
public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();
    void connection();
private:
    Ui::MainWindow *ui;
private slots:
    void listInforSlot();
    void showInsertSlot();
};
 
#endif // MAINWINDOW_H
 

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "insert.h"
using namespace std;
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(listInforSlot()));
    QObject::connect(ui->insertButton,SIGNAL(clicked()),this,SLOT(showInsertSlot()));
 
 
}
 
MainWindow::~MainWindow()
{
    delete ui;
}
void MainWindow::listInforSlot(){
    QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("teachers");
    db.setUserName("root");
    db.setPassword("FORGETme11");
    bool ok=db.open();
    if(ok){
 
    }
    else{
        QMessageBox msgBox;
        msgBox.setText("Error connect database!"+db.lastError().text());
        msgBox.exec();
    }
      QSqlTableModel *model=new QSqlTableModel;
      model->setTable("infors");
      model->setFilter("age>=35");
      model->select();
    for(int i=0;i<model->rowCount();i++)
    {
        QSqlRecord record=model->record(i);
        int id=record.value("id").toInt();
        QString name=record.value("name").toString();
        QString add=record.value("address").toString();
        int age=record.value("age").toInt();
         cout<<id<<".."<<qPrintable(name)<<".."<<qPrintable(add)<<".."<<age<<endl;
 
    }
      ui->tableView->setModel(model);
      db.close();
 
       //QSqlDatabase::removeDatabase("teachers");
 
}
void MainWindow::showInsertSlot()
{
    insert *widget=new insert;//show出insert窗口
    widget->show();
}
void MainWindow::connection(){
 
}
 

insert.h:

#ifndef INSERT_H
#define INSERT_H
 
#include <QDialog>
#include <QtSql>
#include <QSqlTableModel>
#include <QSqlDatabase>
#include <QString>
#include <QSqlError>
#include <QMessageBox>
#include <QSqlRecord>
#include <iostream>
#include <QTableView>
#include <QAbstractItemModel>
namespace Ui {
class insert;
}
 
class insert : public QDialog
{
    Q_OBJECT
 
public:
    explicit insert(QWidget *parent = 0);
    ~insert();
private slots:
    void insertSlot();
private:
    Ui::insert *ui;
};
 
#endif // INSERT_H
 

insert.cpp:

#include "insert.h"
#include "ui_insert.h"
using namespace std;
insert::insert(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::insert)
{
    ui->setupUi(this);
    QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(insertSlot()));
 
}
 
insert::~insert()
{
    delete ui;
}
void insert::insertSlot(){
    QSqlDatabase db1=QSqlDatabase::addDatabase("QMYSQL");
    db1.setHostName("localhost");
    db1.setDatabaseName("teachers");
    db1.setUserName("root");
    db1.setPassword("FORGETme11");
    bool ok=db1.open();
    if(!ok)
    {
        QMessageBox msgBox;
        msgBox.setText("Error connect database!"+db1.lastError().text());
        msgBox.exec();
    }
     int id=ui->idEdit->text().toInt();
     //QString id2=QString::number(id);
     QString name=ui->nameEdit->text().trimmed();//string
    // string  name1=name.toStdString();
   QByteArray  name1=name.toUtf8();
     QString add=ui->addEdit->text().trimmed();
    // string add1=add.toStdString();
    QByteArray  add1=add.toUtf8();
     int age=ui->ageEdit->text().toInt();
 
     cout<<id<<".."<<qPrintable(name)<<".."<<qPrintable(add)<<".."<<age<<endl;
     /*bool ok=db.open();
     if(!ok){
         QMessageBox msgBox;
         msgBox.setText("Database not list.");
         msgBox.exec();
     }
     else
     {*/
             QSqlQuery query;
             query.prepare("INSERT INTO infors (id, name, address,age) "
                           "VALUES (?,?,?,?)");
             query.addBindValue(id);
             query.addBindValue(name1);
             query.addBindValue(add1);
             query.addBindValue(age);
             query.exec();
    // }
   // QString insert=QString("insert into infors values(11,;
     //QSqlQuery query(insert);
     //query.exec();
      db1.close();
      close();
}
 

main.cpp

#include "mainwindow.h"
#include <QApplication>
 
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
 
    return a.exec();
}
 ; 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值