如何使用Qt在SQLite数据库中插入radiobutton值?

时间:2016-12-07 21:58:22

标签: c++ qt sqlite qradiobutton

我是编程新手。 我想将我的radiobutton的值插入SQLite数据库 但仍然没有找到正确的方法。 该程序包括9个radiobutton,分别为1-4,4-5,6-7和8-9,分为4个不同的分组/布局。 谢谢。

enter image description here

   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");

   }
   }

2 个答案:

答案 0 :(得分:0)

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

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)。我推荐的方式如下:

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()并继续使用该程序。

答案 1 :(得分:0)

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

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而不是单选按钮可能更有意义。这里使用的方法(功能)与单选按钮和复选框相同。