QSQLTableModel滤波器无结果
QSqlTableModel filter no results
我正在尝试访问qt c 中的mysql。
我有不同的表,想在QTableView
上输出它们。
我使用的是QSqlTableModel
,它效果很好,但是一旦我想过滤结果,我就会遇到问题。
这是我的源代码的主要部分:
mModelContacts->setTable("contacts");
mModelContacts->select();
mUi->tableContacts->setModel(mModelContacts);
void MainWindow::on_submitContactsButton_clicked()
{
switch(mUi->comboBoxContacts->currentIndex())
{
case 0:
mModelContacts->setFilter("contacts_id = "+mUi->searchContactsLine->text());
break;
case 1:
mModelContacts->setFilter("contacts_firstName LIKE "+'%'+mUi->searchContactsLine->text()+'%');
break;
case 2:
mModelContacts->setFilter("contacts_lastName LIKE "+'%'+mUi->searchContactsLine->text()+'%');
break;
case 3:
mModelContacts->setFilter("contacts_city LIKE "+'%'+mUi->searchContactsLine->text()+'%');
break;
case 4:
mModelContacts->setFilter("contacts_phoneNumber LIKE "+'%'+mUi->searchContactsLine->text()+'%');
break;
}
mModelContacts->select();
mUi->tableContacts->setModel(mModelContacts);
}
ID滤波器(情况0)工作正常。但是其他所有内容(名称,姓氏等)都没有。我刚刚得到一张空桌子。因此,我可以看到列的名称(因此我认为我的SQL语法正确),但是没有任何条目,无论我输入什么。
我的源代码中是否有错误?或我该如何工作?
您将char*
C-Style String("contacts_firstName LIKE "
)添加到char
('%'
)存在问题,这将导致以下内容:
-
char
('%'
)将被施放到整数(其在ASCII中的表示),以便执行加法,请查看此信息。 - 由铸件产生的整数(
37
)将添加到char*
C-Style字符串中,这将使您进入您尚未初始化的内存(也许是您只读的其他C-Style字符串数据部分)。 - 之后,
QString
添加了上面的邪恶指针(直到找到' '
字符)到您的行编辑中的字符串,从而导致您显然不是目标的QString
。。。
总而言之,您应该用这样的东西替换setFilter
电话:
mModelContacts->setFilter(QString("contacts_firstName LIKE '%")+mUi->searchContactsLine->text()+QString("%'"));
相关文章:
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- 是否可以将无符号 int 的最大值转换为 int 并将结果转换为 -1?
- 为什么 Clang 和 GCC 中两个无符号整数之和的结果类型不同
- C++,概念不适用于无符号整数作为结果类型?
- 将零附加到数字时,无符号数字会显示不同的结果
- QSQLTableModel滤波器无结果
- 用有符号长整型结果减去无符号长整型
- 如何正确地将无符号字符转换为CString,并再次将CString的结果反向转换为无符号字符
- FIR滤波器在C++中使用MATLAB中的系数设计,滤波器没有给出正确的结果
- 错误 C4146:一元减号运算符应用于无符号类型,结果仍然无符号
- 在无具有特定生成文件名的目标中生成干净的结果
- 将2^31赋给有符号和无符号的32位整数变量后的奇怪结果
- 无符号值之间的减法-意外结果
- C/C++:正在使用比较结果作为int真正的无分支
- 溢出的有符号/无符号赋值及其结果
- C++中的右移产生异常结果(无符号64位)
- 为什么无符号字符的结果<<无符号字符不是无符号字符
- 对于无符号字符,boost::lexical_cast 和 std::to_string 的正确结果是什么
- 减去无符号整数的有符号结果
- 显示无符号字符*和有符号字符*输出的结果是否完全相同