[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序相关的知识,希望对你有一定的参考价值。
odbc基础这是使用 win32asm进行数据库编程系列的第一份教程。在如今的it界,数据库编程变的越来越重要,所以我们不能再忽视它。但如今有很多种数据库在使用,如果我们为了实现win32下数据库汇编语言编程而学习各种数据库文件格式,所花时间大概称得上“永恒”。幸运的是,microsoft的一项技术使得我们得以摆脱这个大麻烦。它被称为odbc,是开放式数据库互连(open database connectivity)的缩写,这是一族api,与windows api相似。它主要与数据库打交道。就是说,利用odbc api,你可通过统一界面和好多各不相同的数据库打交道。应用程序 (application,你的程序)odbc 管理器 (odbc manager)odbc 驱动程序(odbc drivers)数据源 (data sources,数据库)你的程序<---- odbc管理器<---- odbc驱动程序 <---- 数据库odbc管理器由microsoft提供。看一下你的控制面板。如果你正确地安装了odbc你会找到odbc数据源(32位) 项目。 至于odbc驱动程序, microsoft随他们的产品提供了好几种。并且你总可从数据库提供商那里获得新的odbc 驱动程序。只要简单地安装新的odbc驱动程序,你的机器就可使用新的它以前不知道的数据库。odbc apis 使用很简单,但你需要知道一些关于sql和数据库的知识。例如字段(field),主键(primary key),记录(record),列(column),行(row)等。我须假定你已知道数据库理论的一些基础知识,这样我才能讨论win32下用汇编语言进行odbc编程的细节问题。正如你所看到的,odbc 管理器试图在你的程序里隐藏实现的细节。这意味着它必须提供某些基本界面来与你的程序和odbc驱动程序进行通讯。 由于odbc驱动程序在某些性能方面存在着差异,因此必须存在一种方法,以使得我们的程序能够知道某个odbc驱动程序是否支持某一特性。 odbc定义了被称为interface conformance levels的三层服务界面。第三层是核心层。任何odbc驱动程序都要象在第一层和第二层实现功能一样实现核心层表中的所有特性。从我们的程序的眼光来看, odbc apis被分割为这样的三层。如果某个函数被标为核心的,就意味着你可放心使用而不必担心它是否为你正使用的odbc驱动程序支持。如果它是一个第一层或第二层的函数,你就得确认odbc驱动程序是否支持,然后再使用。你可通过msdn获得odbc apis的详细资料。在编写代码之前你应了解一些odbc的名词。环境(environment). 和字面意思一样,是一个全局文本用来存取数据。如果你熟悉dao的话,你可把它想象为一个workspace。它包含应用于所有odbc session的信息,例如一个session的connections句柄。在用odbc之前你必须从环境中获得这个句柄。连接(connection). 指定odbc驱动程序和数据源(数据库)。你可以在同一环境中同时连接不同的数据库语句(statement). odbc使用sql作为自己的语言。 因而只要简单的认为语句就是你希望odbc执行的sql命令就行了。以下是使用odbc编程的一般步骤:连接数据源创建并执行一条或多条sql语句 参考技术A 您好,这样的情况建议您下载最新版本的驱动精灵,或是直接在线升级一下驱动精灵。希望可以帮到您。Microsoft Access ODBC 驱动程序管理器函数序列错误
【中文标题】Microsoft Access ODBC 驱动程序管理器函数序列错误【英文标题】:Microsoft Access ODBC Driver Manager Function sequence error 【发布时间】:2019-03-28 21:07:37 【问题描述】:我正在尝试使用 Qt 通过 QSqlQuery 查询 MS Access 数据库中的表。我能够查询所有表,除了一个。一表返回错误:
[Microsoft][ODBC Driver Manager] Function sequence error
这是我用来查询表格的代码。
QSqlQueryModel *tempModel = new QSqlQueryModel();
QSqlQuery *qry = new QSqlQuery();
qry->prepare("SELECT * FROM table_name;");
qry->exec();
tempModel->setQuery(*qry);
while(tempModel->canFetchMore())
tempModel->fetchMore();
我已经尝试过这个 SO question 的答案,但没有改变。 QSqlQuery causing ODBC Function sequence error
【问题讨论】:
【参考方案1】:我也遇到了与 MySql 后端的 DAO 连接器的问题。我的直通查询正常工作,但尝试使用 DAO 从表中读取时收到 ODBC 函数序列错误。记录集连接器很好 - move.first、move.last、记录计数、计算字段名称没有问题。尝试读取记录数据时程序失败 - 但同样,我的直通查询没有发生问题。
问题很容易解决。更改表架构后,我忘记刷新我的 ODBC 链接。刷新了链接..现在一切正常了。
为了简化我的生活,我添加了一个程序链接供最终用户自动刷新 ODBC 链接。
【讨论】:
【参考方案2】:问题似乎与其中一列的日期/时间数据类型有关。
我的一个专栏的数据类型为“日期/时间”,其“IME 句子模式”属性设置为“短语预测”。
将其从“短语预测”更改为“无”允许我从我的 Qt 应用程序查询 MS Access 表。
【讨论】:
以上是关于[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序的主要内容,如果未能解决你的问题,请参考以下文章
[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序怎么解决?
[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序
[Microsoft][ODBC驱动程序管理器]未发现数据源名称并且未指定默认驱动器