我是编程新手。我想将我的单选按钮的值插入到SQLite数据库中,但仍然没有找到正确的方法。该节目包括9个单选按钮,其是4个不同分组/布局中1-3、4-5、6-7和8-9。谢谢。
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");
}
}发布于 2016-12-08 16:59:45
正如一些人评论的那样,问题似乎存在于准备好的语句中。第一个预准备语句不需要是预准备语句,因为您在查询中不使用任何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-09 04:57:56
如果只需要选中的单选按钮,请使用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而不是单选按钮可能会更有意义。这里使用的方法(函数)与单选按钮和复选框相同。
https://stackoverflow.com/questions/41028127
复制相似问题