QSqlError(“0“, “QODBC3: Unable to execute statement“, “[Microsoft][ODBC 驱动程序管理器] 函数序列错误“)

这篇具有很好参考价值的文章主要介绍了QSqlError(“0“, “QODBC3: Unable to execute statement“, “[Microsoft][ODBC 驱动程序管理器] 函数序列错误“)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Qt连接SQL Sever数据库出现 [ODBC 驱动程序管理器] 函数序列错误

平台信息

  • IDE: Qt Creator
  • 数据库: SQL Sever 2019
  • 系统: Windows 10 专业版

问题描述

在使用Qt 的 QDataBase连接SQL Sever的时候,
数据库连接成功,但是执行sql语句时出现问题

  • 错误输出如下
QSqlError("0", "QODBC3: Unable to execute statement", "[Microsoft][ODBC 驱动程序管理器] 函数序列错误")

错误代码的写法

QSqlQuery query(loaclDB);
query.exec(QString("USE Graduation SELECT LoginHistory_TB.ID, LoginHistory_TB.LoginName FROM LoginHistory_TB;");

//这里写了多次的sql执行
if(!query.exec())
{
	qDebug()<<query.lastError();
}
else
{
	while(query.next())
	{
		QString sex = query.value(0).toString();
		QString name = query.value(1).toString();
		qDebug()<<QString("ID: %1 Name: %2").arg(sex).arg(name);
	}
}

原因分析:

  • 这种写法 在读取 sqlite 数据库时候没问题
  • 在SQLSever 里面会出问题

这是因为SQL Sever 数据库还未执行完毕, 但是你的程序又执行了下一条数据库语句。经排查发现是 QSqlQuery 执行sql语句是两条时候 当exec执行完第一条语句后就返回 第二条语句还在执行 所以当执行第三条语句的时候就报错了。

我的上面就连续写了两个 exe函数,导致错误


解决方案:

推荐使用QT官方的写法

 QSqlQuery query("SELECT country FROM artist");
while (query.next()) 
{
	QString country = query.value(0).toString();
	//doSomething(country);
}

上面的代码就可以改为如下文章来源地址https://www.toymoban.com/news/detail-452156.html

QSqlQuery query("USE Graduation SELECT LoginHistory_TB.ID, LoginHistory_TB.LoginName FROM LoginHistory_TB;", dataBase);
while (query.next())
{
	QString sex = query.value(0).toString();
	QString name = query.value(1).toString();
	qDebug()<<QString("ID: %1 Name: %2").arg(sex).arg(name);
}

到了这里,关于QSqlError(“0“, “QODBC3: Unable to execute statement“, “[Microsoft][ODBC 驱动程序管理器] 函数序列错误“)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • exec failed: unable to start container process: exec: “ip“: executable file not found in $PATH

    exec failed: unable to start container process: exec: “ip“: executable file not found in $PATH

    问题报错: 报错原因:因为该容器的镜像时精简版,内部缺少iproute2导致无法使用ip命令 解决方式: 进入容器 docker exec -it 容器名 /bin/bash 进入后: 更新apt apt-get update 安装iproute2 agt install -y iproute2 安装完以后退出exit docker exec -it 容器名 ip addr  修改后尝试结果: 同理  安装

    2024年02月13日
    浏览(9)
  • 注册中心报错was unable to refresh its cache! status = Cannot execute request on any known server

    错误日志如下: 2023-02-16 14:37:27.527  WARN 119653 --- [freshExecutor-0] c.n.d.s.t.d.RetryableEurekaHttpClient    : Request execution failed with message: java.net.SocketTimeoutException: Read timed out 2023-02-16 14:37:27.527 ERROR 119653 --- [freshExecutor-0] com.netflix.discovery.DiscoveryClient    : DiscoveryClient_WXSMALLPROGRAM/xxx:443/wxs

    2024年02月11日
    浏览(9)
  • 学习狂神docker报错解决:exec failed: unable to start container process: exec: “ip“: executable file not found

    学习狂神docker报错解决:exec failed: unable to start container process: exec: “ip“: executable file not found

    问题:最近学习狂神的docker,34节,网络详解。下载tomcat镜像并启动成功。如图  在使用命令:   docker exec -it tomcat01 ip addr 查看容器ip地址时报错:OCI runtime exec failed: exec failed: unable to start container process: exec: \\\"ip\\\": executable file not found in $PATH: unknown  解决方案:安装工具 iproute

    2024年02月12日
    浏览(16)
  • Error: (‘HY000‘, “[HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open regi

    Error: (\\\'HY000\\\', \\\"[HY000] [Microsoft][ODBC Microsoft Access Driver]General error Unable to open registry key Temporary (volatile) Ace DSN for process 0x19e0 Thread 0x3984 DBC 0x6b97a34 Jet\\\'.\\\") 以上是完整报错信息。 在使用pypydobc访问access数据库时报错,找了多种说法都觉不对。 但找到一个有道理的,以下是博主的说法

    2024年02月02日
    浏览(9)
  • STM32问题_01:declaration may not appear after executable statement in block

    STM32问题_01:declaration may not appear after executable statement in block

    如图:在点灯的过程中想写一个for循环来实现随机数点灯功能,但是如下图第26行的代码出现了问题 “declaration may not appear after executable statement in block” ,翻译过来就是 声明不能出现在块中的可执行语句之后 。其实int i是声明语句,值得注意的是 “GPIO_InitTypeDef GIIOPP” (此

    2024年02月04日
    浏览(11)
  • Keil 报错 declaration may not appear after executable statement in block的解决办法

    Keil 报错 declaration may not appear after executable statement in block的解决办法

    在移植修改例程代码时,Keil 报错 “declaration may not appear after executable statement in block”,如下图所示: 经检查代码并没有问题,复制粘贴过来也行不通,说明不是代码本事的问题,应该时编译器的设置的问题。 C语言本身是有ANSI的标准的,但是随着C++的发展,C语言的标准也不

    2024年02月07日
    浏览(13)
  • error: #268: declaration may not appear after executable statement in block问题解决方法

    error: #268: declaration may not appear after executable statement in block问题解决方法

    在stm32f407编程中遇到了error: #268: declaration may not appear after executable statement in block,编写代码如下: 报错情况: 问题分析: 在c89(1989年)标准中规定了c文件中局部变量的定义只能放在所有执行语句前,放在开头处;c99(1999年)标准中c文件中局部变量的定义可以放在任何地方

    2024年02月13日
    浏览(9)
  • Prepared statement needs to be re-prepared

    Prepared statement needs to be re-prepared

    查看打开的表 Opened_tables数值大,说明cache太小,导致要频繁地open table,可以查看下当前的table_open_cache设置 2.查看 table_open_cache 量 mysql 的两个全局变量(打开表的缓存数量,表定义缓存数量)的设置值过小,而你的数据库表数量较多的情况。 此原因是因为 mysql 的变量值设置

    2024年01月18日
    浏览(7)
  • Unable to initialize Git; AggregateError(2) Error: Unable to find git Error: Unable to find git

    MacBook Pro m1 升级系统到13版本后,系统中原有的git突然就不能用了,,,输入git -v 既然打印不到版本号???使用which git 是能打印到配置路径的,,, 解决方案: stack overfolw 帖子地址 然后会跳出一个弹窗让你安装xcode-select 点击安装,自动安装完成,控制台再输入git -v就能

    2024年02月12日
    浏览(40)
  • Portainer连不上docker Unable to retrieve images或Unable to connect to the Docker environment

    系统:Centos docker:23.0.6 portainer:2.19.2 服务器A and 服务器B A,B都有Docker 现象 1、在A上安装了Portainer后,local evironment 可以显示images数量等信息,但无法显示详情,出现Unable to connect to the Docker environment 2、尝试         编辑docker.service         找到 ExecStart字段修改如下  

    2024年04月13日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包