首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Delphi以编程方式获取ODBC数据源名称列表

使用Delphi以编程方式获取ODBC数据源名称列表,可以通过调用Windows API函数SQLDataSources来实现。以下是一个简单的示例代码:

代码语言:delphi
复制
uses
  Windows, SysUtils, DB, ODBC;

function GetODBCDataSourceNames: TStringList;
var
  hEnv: SQLHENV;
  hDsn: SQLHDBC;
  RetCode: SQLRETURN;
  ServerName, UserName: array[0..1024] of Char;
  NameLength1, NameLength2: SQLSMALLINT;
begin
  Result := TStringList.Create;
  try
    RetCode := SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, hEnv);
    if RetCode <> SQL_SUCCESS then
      Exit;
    RetCode := SQLSetEnvAttr(hEnv, SQL_ATTR_ODBC_VERSION, @SQL_OV_ODBC3, 0);
    if RetCode <> SQL_SUCCESS then
      Exit;
    RetCode := SQLAllocHandle(SQL_HANDLE_DBC, hEnv, hDsn);
    if RetCode <> SQL_SUCCESS then
      Exit;
    RetCode := SQLDriverConnect(hDsn, 0, nil, 0, nil, 0, @NameLength1, SQL_DRIVER_NOPROMPT);
    if RetCode <> SQL_SUCCESS then
      Exit;
    RetCode := SQLDataSources(hEnv, SQL_FETCH_FIRST, ServerName, 1024, NameLength1, UserName, 1024, NameLength2);
    while RetCode = SQL_SUCCESS do
    begin
      Result.Add(Format('%s (%s)', [ServerName, UserName]));
      RetCode := SQLDataSources(hEnv, SQL_FETCH_NEXT, ServerName, 1024, NameLength1, UserName, 1024, NameLength2);
    end;
  finally
    SQLFreeHandle(SQL_HANDLE_DBC, hDsn);
    SQLFreeHandle(SQL_HANDLE_ENV, hEnv);
  end;
end;

在这个示例代码中,我们首先调用SQLAllocHandle函数来分配环境句柄,然后调用SQLSetEnvAttr函数来设置环境属性,接着调用SQLAllocHandle函数来分配连接句柄,然后调用SQLDriverConnect函数来建立与数据源的连接。最后,我们调用SQLDataSources函数来获取ODBC数据源名称列表,并将其添加到TStringList对象中。

需要注意的是,这个示例代码只是一个简单的示例,实际应用中可能需要更多的错误处理和资源管理。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

没有搜到相关的沙龙

领券