gpt4 book ai didi

sql-server - 从 TADOConnection 对象确定 ODBC 数据库驱动程序?

转载 作者:行者123 更新时间:2023-12-02 06:07:06 26 4
gpt4 key购买 nike

使用带有 ADO 对象的 Delphi 7,是否可以从 TADOConnection 对象确定 ODBC 数据库驱动程序?因此检测是否是MS-Access或SQL Server或Oracle等。

enter image description here

程序仅使用 ODBC 数据源的名称连接到数据库,我想确定该数据库是 MS-Access 数据库还是 SQL Server。我想这样做是因为 MS-Access 和 SQL Server 使用不同的 SQL 函数名称将整数转换为字符串。

应用程序构建一个 SQL 字符串,用于检索某些配置对象的版本。它适用于使用 cast() 的 SQL Server,但我也想支持使用 CStr() 的 MS-Access:

SELECT NAME + '_' + CAST(VERSION as varchar) as OBJECT_NAME FROM ANALYSIS // SQL Server
SELECT NAME + '_' + CStr(VERSION) as OBJECT_NAME FROM ANALYSIS // MS-Access

我尝试查看 TADOConnection.Provider,但这两种情况都是 MSDASQL.1

if (myqry.Connection.Provider = 'MSDASQL.1') then
strSQL := strSQL + 'cast(' + myfieldname + ' as varchar)' // always goes here..
else
strSQL := strSQL + 'CStr(' + myfieldname + ')'; // ..never to here

我已经查看了所有 TADOConnection 属性,但我开始怀疑这是不可能的。有什么想法可以解决这个问题吗?

最佳答案

ODBC 旨在抽象出服务器的实现细节。您可以use ODBC specific syntax它将被转换为适合服务器的 SQL 风格的语句。在这里你可以替换:

... { fn CONVERT( VERSION, SQL_VARCHAR ) } AS OBJECT_NAME FROM ANALYSIS

这些替换被称为 ODBC Escape Sequences并且可以在存在特定于供应商的语法差异的查询中进行替换。

关于sql-server - 从 TADOConnection 对象确定 ODBC 数据库驱动程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36206241/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com