QTableWIght显示mysql数据

连接mysql,在.pro文件加入

QT +=sql

连接:

QSqlDatabase database=QSqlDatabase::addDatabase("QMYSQL");
database.setHostName("localhost");
database.setPort(3306);
database.setUserName("root");
database.setPassword("123456");
//database.setDatabaseName("lab");如果不创建数据库的话,可以在此选择数据库
if(!database.open())
    {
        qDebug()<<"fail to connect mysql:"<<database.lastError().text();
    }


解决连接问题:QSqlDatabase: QMYSQL driver not loaded QSqlDatabase: available drivers: QSQLITE QODBC QODBC3 QPSQL QPSQL7,很成功的解决了
创建数据库和数据表


    QString querystring;
    //创建数据库
    querystring = "CREATE DATABASE IF NOT EXISTS enman";
    database.exec(querystring);   //2.进行数据库创建
    if (database.lastError().isValid())
    {
        qDebug()<<"Create database failed."<<database.lastError();
    }


    //创建数据表student,首先要use 数据库名
    database.setDatabaseName("enman");
    if(!database.open())
    {
        qDebug()<<"database open failed";
    }
    
    querystring =   //其实是mysql的命令语句,通过消息循环执行
            "CREATE TABLE IF NOT EXISTS student_info.Student\
            (\
                Name varchar(20),\
                NO varchar(20) primary key,\
                Sex varchar(20),\
                Tell varchar(20),\
                Address varchar(30), \
                Hobbies varchar(30)\
                )";
            database.exec(querystring);//执行创建数据表语句
    if (database.lastError().isValid())
    {
        qDebug()<<"Student table creat failed:" << database.lastError();
        return;
    }
    //支持中文
    database.exec("alter table Student convert to character set utf8");
}


添加原始值

//初始化数据库(添加原始值)
void MainWindow::initDB()
{
    QSqlQuery query(database);
    query.exec("insert into Student values('张三', '2018010235', '男','12116588966','北京市朝阳区幸福小区12#103','篮球,游泳')");
    query.exec("insert into Student values('李四', '2018020156', '男','15665487200','湖南省长沙市岳麓区开心小区9#602','足球')");
    query.exec("insert into Student values('灵儿', '2018020202', '女','10202020202','江苏省南京市玄武区爱情公寓2#202','Dota')");
    if(!query.exec())
    {
        qDebug() << "Error: Fail to insert ." << query.lastError();

    }

通过点击按钮触发mysql查询,然后显示在QTableWight上。
首先在ui界面里加入QTableWight,然后再加一个按钮,右击转到槽,编辑clicked函数

void MainWindow::on_pushButton_clicked(){
    QSqlQueryModel* mode= new QSqlQueryModel(ui->tableView);
    QString query = "select* from enman";
    mode->setQuery(query);
    mode->setHeaderData(0,Qt::Horizontal,tr("word"));
    mode->setHeaderData(1,Qt::Horizontal,tr("词性"));
    mode->setHeaderData(2,Qt::Horizontal,tr("meaning"));
    mode->setHeaderData(3,Qt::Horizontal,tr("first"));
    ui->tableView->setModel(mode);
}

然后点击按钮就可以实现Qtablewight显示mysql数据了,然而这无法筛选,所以需要我们的组合能力来实现它。
下面我们将combobox的输入作为检索依据

//槽函数连接
connect(ui->comboBox,SIGNAL(currentTextChanged(QString)),this,SLOT(tableview()));

//在.h文件里声明的
private slots:
     QString tableview();
private:
	QString q;
//写一个槽函数
QString MainWindow::tableview(){
    qDebug() << ui->comboBox->currentText();
    q =  ui->comboBox->currentText();
    qDebug() << q;
    return q;
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值