Qt 中数据库查询的问题
在 Qt 中使用 Access 数据库进行条件查询// 设置查询语句;
query.prepare("select * from 表_数据字典 where 键 = ? ;");
query.addBindValue(itemText);
// 上方两条语句查询不到但是直接使用下方的整条 SQL 语句是可以的
query.prepare("select * from 表_数据字典 where 键 = '企业类型';");
// 查询数据库
if (query.exec())
如果注释上方的两条 SQL 语句启用加粗的语句可以直接得到查询结果但是使用上方的两条SQL语句注释加粗的却无法得到查询结果?
很是神奇,不明白是什么原因? 试一下:
query.prepare("select * from 表_数据字典 where 键 = ?")
query.bindValue(0, itemText)
或者改为ODBC数据库表示方式:
query.prepare("select * from 表_数据字典 where 键 =:占位符")
query.bindValue(":占位符", itemText) brujah 发表于 2020-6-9 18:11
试一下:
query.prepare("select * from 表_数据字典 where 键 = ?")
query.bindValue(0, itemText)
还是不可以的 但是当使用 :占位符 形式的时候好像还有点起色是参数不足,期待是1另也采用这种形式但是将其更换为英文 :key 程序运行无误但是查询结果还是出不来
更加详细的代码:
// 创建数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
// 创建查询对象
QSqlQuery query;
// 设置数据库路径
QString dbFilePath = QDir::currentPath() +"/Data.mdb";
// 判断数据库文件是否存在
if (!QFile::exists(dbFilePath))
{
::QMessageBox::about(this,"提示信息","数据库文件不存在!");
return;
}
// 设置数据库
db.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ="+dbFilePath+";UID='';PWD=''");
// 打开数据库进行操作
try
{
// 打开数据库
if (!db.open())
{
::QMessageBox::about(this,"提示信息","抱歉,数据库打开失败!");
return;
}
// 设置查询语句;
query.prepare("select * from 表_数据字典 where 键 = ? ;");
query.bindValue(0,itemText);
// 查询数据库
if (query.exec())
{
// 循环添加设置节点
while(query.next())
{
akjarjash 发表于 2020-6-9 19:55
还是不可以的 但是当使用 :占位符 形式的时候好像还有点起色是参数不足,期待是1另也采用这种形式但是 ...
Access数据库我没操作过,但感觉你的问题出在db.setDatabaseName后面的配置上,你可以用qDebug() << db.isValid()来验证db每步返回是否有效,或者直接用qDebug() << db.lastError() brujah 发表于 2020-6-9 20:47
Access数据库我没操作过,但感觉你的问题出在db.setDatabaseName后面的配置上,你可以用qDebug()
测试了下 LastError 显示的是空文本 isValid() 显示的是 true 唉不管了可能是 Bug 吧 直接改用拼接字符串的方式了另外有一个登陆窗体中就是用的 where name = ? and pwd = ? ; bindValue() 的形式无完好的
不管了 哈哈 多谢帮助
页:
[1]