首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在使用qt的mssql数据库查询中使用变量作为int?

如何在使用qt的mssql数据库查询中使用变量作为int?
EN

Stack Overflow用户
提问于 2012-11-18 01:44:41
回答 1查看 659关注 0票数 0

我已经建立了一个快速的应用程序,我正在尝试制作,以了解如何实现动态装修或类别选项列表的产品列表(即,品牌,型号,年份搜索)。我以为我找到了一种简单的方法,但我发现它比我想象的要难。我已经动态地创建了装修选项所需的组合框,但我不知道如何获取装修组的ID,并在新查询中将其用作“where子句”的一部分。在qt中,将变量用作mssql数据库查询中的int的最佳方式是什么?

代码语言:javascript
复制
#include "mainwindow.h"
#include "ui_mainwindow.h"

#include <QtCore>
#include <QtGui>
#include <QtSql>

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setHostName("ROBERT-PC");
db.setDatabaseName("mydsn32");

if(!db.open())
{
    qDebug() << "Could Not Open";
}
else
{
    QVBoxLayout *vbox = new QVBoxLayout();

    qDebug() << "Open, and now closing";
    QSqlQuery qry;

    if(qry.exec("SELECT * FROM [BOBs].[dbo].[FitmentTagGroup]"))
    {
        qDebug() << "Query Was Opened";
        while(qry.next())
        {
            QString combBoxName = qry.value(1).toString() + "CombBox";
            int combBoxID = qry.value(0).toInt();
            QLabel *combBoxNameLbl = new QLabel();
            combBoxNameLbl->setText(combBoxName);
            QComboBox *combBox = new QComboBox();
            QSqlQuery qry2;
            if(qry2.exec("SELECT * FROM [BOBs].[dbo].[FitmentTag] WHERE FitmentTagGroupID='1'"))
            {
                while(qry2.next())
                {
                    qDebug() << qry2.value(2).toString();
                }
            }
            else
            {
                qDebug() << "Query Could Not Open\n\t" << qry2.lastError();
            }
            vbox->addWidget(combBoxNameLbl);
            vbox->addWidget(combBox);
        }
    }
    else
    {
       qDebug() << "Query Could Not Open\n\t" << qry.lastError();
    }

    model = new QSqlQueryModel();

    db.close();

    QFrame *mainFrame = new QFrame();
    mainFrame->setLayout(vbox);
    setCentralWidget(mainFrame);
}

}

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-11-18 04:01:18

您应该使用准备好的语句和绑定值来解决您的问题。

不是使用

代码语言:javascript
复制
qry2.exec(
   "SELECT * "
   "FROM [BOBs].[dbo].[FitmentTag] "
   "WHERE FitmentTagGroupID = '1' "
);

你应该使用类似这样的东西:

代码语言:javascript
复制
qry2.prepare(
   "SELECT * "
   "FROM [BOBs].[dbo].[FitmentTag] "
   "WHERE FitmentTagGroupID = :groupid "
);
qry2.bindValue(":groupid", groupId);
qty2.exec();

阅读更多here

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13433083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档