我是编程新手。 我想将我的radiobutton的值插入SQLite数据库 但仍然没有找到正确的方法。 该程序包括9个radiobutton,分别为1-4,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");
}
}
答案 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而不是单选按钮可能更有意义。这里使用的方法(功能)与单选按钮和复选框相同。