0

我对编程很陌生。我想将单选按钮的值插入 SQLite 数据库,但仍然找不到正确的方法。该程序包含 9 个单选按钮,分别是 1-3、4-5、6-7 和 8-9 4 个不同的分组/布局。谢谢你。

在此处输入图像描述

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

   }
   }
4

2 回答 2

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

于 2016-12-08T20:57:55.857 回答
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() 并继续执行该程序。

于 2016-12-08T08:59:44.797 回答