我想知道为什么当我使用SQLite Manager查看表时,为什么得到一个奇怪的符号,它的一个框在三个角中封装了3个0,在最后一个角中封装了3个。如果我使用QString,则小时数是否仍可以像数字值一样操作小时数列?谢谢
void FirstWindow::on_pushButton_clicked()
{
FirstWindow conn;
QString rowid,Activity,thehours;
Activity=ui->lineEdit->text();
rowid=3;
thehours=1;
conn.connOpen();
QSqlQuery qry;
qry.prepare("insert into datatable (row,activity,hours) values('"+rowid+"','"+Activity+"','"+thehours+"')");
//if this is good
if(qry.exec())
{
this->hide();//hiding current ui
mainwindow = new MainWindow(this);
mainwindow->show();
conn.connClose(); //close after inserting another
}
最佳答案
首先,您的列是字符串还是整数?
我将检查ui-> lineEdit-> text()是否实际上返回了数字。
其次,为您希望保存/加载的数据设置正确的列类型(整数,字符串,实数等)。这样,QSQLite错误将更有帮助。
第三,应该避免串联字符串以准备sql查询(假设rowid包含'字符!)。最好的方法是使用sqlite占位符调用prepare,然后添加值:
QSqlQuery qry;
qry.prepare("insert into datatable (row,activity,hours) values(?, ?, ?");
qry.addBindValue(rowid);
qry.addBindValue(Activity);
qry.addBindValue(thehours);
if(!qry.exec())
{
qDebug() << qry.lastError();
}