2016-09-20 60 views
0

任何人都可以帮助我理解本机数据库连接器和ODBC连接器之间的确切区别。我搜索了很多,发现在本地连接器SQL中,数据和应用程序内部构建的实际接口是专门为特定数据库设计的。现在什么意思是“专门为特定数据库设计的” 可以说我的代码是用C++编写,我使用本地连接器连接到SQLServer。使用odbc连接器使用本地连接器wrt会有什么不同?如果这是一个愚蠢的问题,请原谅我。本机驱动程序如何工作?

http://www.information-management.com/news/ask_the_experts/-1077488-1.html 感谢, 尼

+0

查看此答案在这里:http://stackoverflow.com/questions/103167/what-is-the-difference-between-ole-db-and-odbc-data-sources 本机连接器SQL将是箭头在最左侧,它直接与数据库交互,没有任何抽象层。 – erg

回答

1

ODBC是一个通用的,DBMS无关的API。

ODBC驱动程序介于此通用API和DBMS客​​户端和/或引擎的DBMS特定API之间。

如果您将代码写入ODBC API并仅使用通用查询语法(不包括特定于DBMS的查询语法,如用于Microsoft SQL Server的Transact-SQL或用于Oracle的Oracle-SQL),则可能会针对任何ODBC驱动程序和任何DBMS,通常只需最少的附加测试或代码工作。

如果您将代码写入特定于DBMS的API或使用特定于DBMS的查询语法(例如Transact-SQL或Oracle-SQL),那么它只能针对该DBMS运行,并且只能通过那些DBMS客​​户端库 - 甚至可能是DBMS版本特定的。适应不同的DBMS或不同版本的相同DBMS和/或其客户端库可能需要大量的测试和代码工作。

此编译应用程序(无需重新编译,重新链接等)可移植性和面向未来(在一些限制内)是ODBC和JDBC以及其他DBMS不可知的数据访问协议的基本价值主张。

+0

Odbc还提供更多固定选项。如果您想提供特殊的增强功能,则不会控制ODBC。您可以将这些附加功能添加到API。但是如果ODBC没有它的代码,你将不会得到你的附加功能的支持。使用一个和另一个可以影响您的应用程序速度。 –

+0

[ODBC与“本机”API的性能分析是旧新闻](http://www.drdobbs.com/performance-testing-odbc-and-native-sql/184410033)。某些客户端层功能可能需要对ODBC协议进行更改(目前为3.5.8;仍在不断发展),但大多数增强功能都发生在DBMS引擎中,应用程序可以对这些引擎进行询问_(您的DBMS是什么?是什么版本?)_然后专门寻址_(如果我知道引擎,则使用此优化命令;否则,请使用此泛型)。对于大多数应用程序,假设编写良好的驱动程序和编写良好的应用程序,ODBC提供了足够的速度。 – TallTed

相关问题