Qt 数据库查询数据在表中显示

时间:2023-01-18 15:23:22
我建立了一个数据库,数据库中的内容显示在表一中,然后建立了一个查询的按钮,现在要实现的是查询数据库后的数据在另外一张表表2中显示怎么做,求大神指导

8 个解决方案

#1


没人会吗?求大神回复啊!!!

#2


用QSqlTableModel

#3


引用 2 楼 qq214517703 的回复:
用QSqlTableModel

我知道的啊,能具体的吗?

#4


        QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
        QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=203.88.208.89;DATABASE=DB10762");
        //设置主机和数据库名
        db.setDatabaseName(dsn);
        //即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤
        db.setUserName("DB10762");
        db.setPassword("72bac2");
        if(!db.open()) {
                qDebug() << "NO";
                return;
        }
         qDebug() << "YES";
         
QSqlTableModel *model = new QSqlTableModel;


         QTableView  * view = new QTableView();
         view->setModel(model);
         view->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置成不可编辑
        

执行SQL语句:
QSqlQuery query = model->query();
model->setQuery("select * from stu");
        model->setHeaderData(0, Qt::Horizontal, tr("id"));
        model->setHeaderData(1, Qt::Horizontal, tr("name"));

#5


这个百度一下 就一大把了。  T_T

#6


引用 5 楼 qq214517703 的回复:
这个百度一下 就一大把了。  T_T

自己解决了,谢谢,只要把查询到的数据放到另外一张表中显示就好了,按你这么做之前的表1里面的数据应该也会改变的!!

#7


QSqlTableModel 还是不错的,支持事务管理

#8


我的第一反应估计是和楼主的解决方法一样:
QSqlQuery up;
    up.prepare("select * from ...where name=:dname");
    QString str2=QString("%1").arg(login);
    up.bindValue(":dname",str2);
    up.exec();
    QSqlRecord rec=up.record();
    while(up.next())
    {
        rec=up.record();
        int spassword=rec.indexOf("password");
        QString value=up.value(spassword).toString();
    }
    if(value==password)
        {
QStringstr=QString("insert into ...(name,password)values(%1,%2)").arg(zhanghao).arg(mima);
            query.exec(str);
        }
        else
        {
            QMessage::warning(...);
        }

四楼的方法有时间我得学学~~ Qt 数据库查询数据在表中显示

#1


没人会吗?求大神回复啊!!!

#2


用QSqlTableModel

#3


引用 2 楼 qq214517703 的回复:
用QSqlTableModel

我知道的啊,能具体的吗?

#4


        QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
        QString dsn = QString::fromLocal8Bit("DRIVER={SQL SERVER};SERVER=203.88.208.89;DATABASE=DB10762");
        //设置主机和数据库名
        db.setDatabaseName(dsn);
        //即使dsn中已经设置了UID和PASSWD,仍然需要执行setUserName和setPassword的步骤
        db.setUserName("DB10762");
        db.setPassword("72bac2");
        if(!db.open()) {
                qDebug() << "NO";
                return;
        }
         qDebug() << "YES";
         
QSqlTableModel *model = new QSqlTableModel;


         QTableView  * view = new QTableView();
         view->setModel(model);
         view->setEditTriggers(QAbstractItemView::NoEditTriggers); //设置成不可编辑
        

执行SQL语句:
QSqlQuery query = model->query();
model->setQuery("select * from stu");
        model->setHeaderData(0, Qt::Horizontal, tr("id"));
        model->setHeaderData(1, Qt::Horizontal, tr("name"));

#5


这个百度一下 就一大把了。  T_T

#6


引用 5 楼 qq214517703 的回复:
这个百度一下 就一大把了。  T_T

自己解决了,谢谢,只要把查询到的数据放到另外一张表中显示就好了,按你这么做之前的表1里面的数据应该也会改变的!!

#7


QSqlTableModel 还是不错的,支持事务管理

#8


我的第一反应估计是和楼主的解决方法一样:
QSqlQuery up;
    up.prepare("select * from ...where name=:dname");
    QString str2=QString("%1").arg(login);
    up.bindValue(":dname",str2);
    up.exec();
    QSqlRecord rec=up.record();
    while(up.next())
    {
        rec=up.record();
        int spassword=rec.indexOf("password");
        QString value=up.value(spassword).toString();
    }
    if(value==password)
        {
QStringstr=QString("insert into ...(name,password)values(%1,%2)").arg(zhanghao).arg(mima);
            query.exec(str);
        }
        else
        {
            QMessage::warning(...);
        }

四楼的方法有时间我得学学~~ Qt 数据库查询数据在表中显示