首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Qt在SQLite数据库中插入单选按钮值?

如何使用Qt在SQLite数据库中插入单选按钮值?
EN

Stack Overflow用户
提问于 2016-12-08 05:58:22
回答 2查看 301关注 0票数 0

我是编程新手。我想将我的单选按钮的值插入到SQLite数据库中,但仍然没有找到正确的方法。该节目包括9个单选按钮,其是4个不同分组/布局中1-3、4-5、6-7和8-9。谢谢。

enter image description here

代码语言:javascript
复制
   void lifestyle::on_pushButton_3_clicked()
   {
       QSqlQuery myqry;

       myqry.prepare("CREATE TABLE IF NOT EXISTS Lifestyle (Drinking VARCHAR(15), "
                  "Exercise VARCHAR(15), Smoking VARCHAR(10), Diet VARCHAR(10)) ");
            if(!myqry.exec())
            qDebug()<<myqry.lastError();
       else
            qDebug()<<"Table Created!";

       QString drinking= ui->radioButton_1->text();
       QString exercise = ui->radioButton_5->text();
       QString smoking = ui->radioButton_7->text();
       QString diet = ui->radioButton_8->text();

       myqry.prepare("INSERT INTO Lifestyle(Drinking, Exercise, Smoking, Diet) "
                  "values('"+drinking+"','"+exercise+"','"+smoking+"','"+diet+"')");

       if(myqry.exec()){
        ui->labelstat->setText("The information has been saved");

       }
       else{
        ui->labelstat->setText("Information failed to saved");

   }
   }
EN

回答 2

Stack Overflow用户

发布于 2016-12-08 16:59:45

正如一些人评论的那样,问题似乎存在于准备好的语句中。第一个预准备语句不需要是预准备语句,因为您在查询中不使用任何c++变量。尝试像这样重写第一个查询,并省略第一个myqry.prepare。

代码语言:javascript
复制
if(!myqry.exec("CREATE TABLE IF NOT EXISTS Lifestyle (Drinking VARCHAR(15), "
              "Exercise VARCHAR(15), Smoking VARCHAR(10), Diet VARCHAR(10)) "))

第二个查询应使用预准备语句。Qt支持几种绑定到预准备语句的方法(请参阅http://doc.qt.io/qt-5/qsqlquery.html)。我推荐的方法如下:

代码语言:javascript
复制
myqry.prepare("INSERT INTO Lifestyle(Drinking, Exercise, Smoking, Diet) "
              "values(:drink,:exercise,:smoke,:diet)");
myqry.bindValue(":drink",drinking);
myqry.bindValue(":exercise",exercise);
myqry.bindValue(":smoke",smoking);
myqry.bindValue(":diet",diet);

然后,您可以调用myqry.exec()并继续执行程序。

票数 0
EN

Stack Overflow用户

发布于 2016-12-09 04:57:56

如果只需要选中的单选按钮,请使用isChecked()方法。

代码语言:javascript
复制
QString drinking = "";
QString exercise = "";
QString smoking = "";
QString diet = "";

if (ui->radioButton_1->isChecked()) {
  drinking = ui->radioButton_1->text();
}

if (ui->radioButton_5->isChecked()) {
  exercise = ui->radioButton_5->text();
}

if (ui->radioButton_7->isChecked()) {
  smoking = ui->radioButton_7->text();
}

if (ui->radioButton_8->isChecked()) {
  diet = ui->radioButton_8->text();
}

myqry.prepare("INSERT INTO Lifestyle(Drinking, Exercise, Smoking, Diet) "
              "values(:drink,:exercise,:smoke,:diet)");
myqry.bindValue(":drink",drinking);
myqry.bindValue(":exercise",exercise);
myqry.bindValue(":smoke",smoking);
myqry.bindValue(":diet",diet);
myqry.exec();

我不太了解您的应用程序,但是如果可以选择多个单选按钮,那么使用QCheckBox而不是单选按钮可能会更有意义。这里使用的方法(函数)与单选按钮和复选框相同。

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

https://stackoverflow.com/questions/41028127

复制
相关文章

相似问题

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